第一届“百度杯”信息安全攻防总决赛_Upload
题目见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