i春秋Web-Upload(第一届“百度杯”信息安全攻防总决赛 线上选拔赛)

查看源码:

 告诉我们要上传一个ichunqiu的参数,但是貌似并没有找所谓的find,bp抓包看到响应中有flag的响应头:
i春秋Web-Upload(第一届“百度杯”信息安全攻防总决赛 线上选拔赛)_第1张图片

 但是解码之后上传得到的还是没上传一样的情况,响应头中的flag的内容改变了,网页也告诉我们be a fast man,所以就要写脚本了:
 

import requests
import base64

url = 'http://dc587a4fbff74976b22f2bd18ec43caecfed2293ecc7495d.changame.ichunqiu.com/'
s = requests.session()
r = s.get(url)
fh = r.headers["flag"]
b = base64.b64decode(fh)
f = str(b).split(':')
data = base64.b64decode(f[1])
payload = {"ichunqiu":data}
fl = s.post(url, data = payload)
print(fl.text)

得到:3712901a08bb58557943ca31f3487b7d

然后访问这个路径,进入一个登陆界面:

i春秋Web-Upload(第一届“百度杯”信息安全攻防总决赛 线上选拔赛)_第2张图片

 验证码md5后的前六位给出来了,写个爆破脚本爆破出验证码:

import hashlib

dic = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for i in range(999999999):
    h = hashlib.md5(str(i).encode()).hexdigest()[:6]
    print(h)
    print(i)
    if h == 'd883a2':
        print(i)
        break

为什么是纯数字,开别人的wp上就是数字,本来一直以为是4位的数字+字母,还爆破了一遍,谁知道这题怎么如此无聊。。。爆破是超级慢。

扫一下这个登陆页面,发现有svn泄露:
i春秋Web-Upload(第一届“百度杯”信息安全攻防总决赛 线上选拔赛)_第3张图片
 

 但是因为是301,没能下载源码,svn里有一个wc.db的数据库文件,尝试访问发现这个文件是可以访问的:
i春秋Web-Upload(第一届“百度杯”信息安全攻防总决赛 线上选拔赛)_第4张图片

 拿到用户名:8638d5263ab0d3face193725c23ce095

爆出验证码之后,密码123就能进,什么玩意,要是密码随便一个不能进,岂不是要再爆破一次验证码,登录弹窗给出一个页面7815696ecbf1c96e6894b779456d330e.php,进入这个页面之后是一个文件上传,后缀变换进行上传,最后pht上传成功拿到flag。

你可能感兴趣的:(i春秋)