
题目见i春秋ctf训练营
看到fast,就想抓个包看看,以前有道题是打开链接直接来了个跳转,当然这题不是
查看返回包,发现一个好东西
拿去base64解码看看
感觉给出的字符串能继续解码,果然解码后得到一串数字
根据提示要把这串数字以post方式提交,变量名为ichunqiu
看到返回的是fast!!!,看来我的手速是满足不了ichunqiu了,那就上py跑
这里有个贼坑爹的事,一开始用py3写的代码死活跑不出来,看了wp,同样原理的py2.7的代码却运行自如
我先贴一下我的py3:
import requests
import base64
url = 'http://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.ichunqiu.com/'
r = requests.get(url).headers['flag']
key = base64.b64decode(r).decode().split(':')[1]
key2 = base64.b64decode(key).decode()
print(key2)
flag = {'ichunqiu':key2}
print(requests.post(url, data=flag).text)
要是有大佬知道原因请吱个声
py2.7的代码:
import base64,requests
def main():
a = requests.session()
b = a.get("http://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.ichunqiu.com/")
key1 = b.headers["flag"]
c = base64.b64decode(key1)
d = str(c).split(':')
key = base64.b64decode(d[1])
body = {"ichunqiu":key}
f = a.post("http://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.ichunqiu.com/",data=body)
print f.text
if __name__ == '__main__':
main()
结果是直接返回了一个路径
输入路径后并没有发现有什么线索
里面有个登陆页面,试了好多注入语句都没发现有什么问题
查看wp后才知道是一个SVN 源码泄露漏洞
听大佬的话去访问URL+/刚才的路径/.svn/wc.db,看到了username
同时看到下面的验证码,提示md5加密后前六位为812367,直接用大佬给的验证码脚本跑了(话说大佬怎么知道是8位验证码而且还是不带字母的)
#coding:utf-8
import hashlib
def md5(s):
return hashlib.md5(str(s).encode('utf-8')).hexdigest()
def main(s):
for i in range(1,99999999):
if md5(i)[0:6] == str(s):
print(i)
exit(0)
if __name__ == '__main__':
main("d72824")
将md5后的username与跑出的验证码填入,密码这里似乎随便填一个就行了,我随手一个123就进去了,又得到一个地址
进去一看是个上传,不管三七二十一先抓个包,然后00截断一下试试:
结果返回JPG!!! ,并没有卵用,接着试3.php.jpg,图片成功上传,还被重命名了,并没有解析成php
接着我直接传入php文件并修改后缀名
返回了You got it!:),但并没有实质内容,没办法,去看了wp后才知道后缀可以改成pht
修改完成后成功返回flag