buu[护网杯 2018]easy_tornado
[护网杯 2018]easy_tornado
1.看看题目给了我们三个文件:
/flag.txt
url=?filename=/flag.txt&filehash=98c6aac4fbecf1b8604767afad2b65ef |
告诉flag在/fllllllllllllag里面。
把fliename替换后报错:
/welcome.txt
url=?filename=/welcome.txt&filehash=b974cea7b45f12a2d446e8e7843ce2fb |
题目是tornado它是一个用Python语言写成的Web服务器兼Web应用框架,而render是python中的一个渲染函数。//也就是一种模板,通过调用的参数不同,生成不同的网页。
这是一些关于python开发的知识,鄙人不才。
召唤大佬:
render函数介绍
tornado模板self.render和模板变量传递
/hint.txt
url=?filename=/hints.txt&filehash=08ce25d3b83efc17e7462e06bc241d71 |
通过对比这三个文件,访问文件需要把fliename(文件名)MD5编码然后加上cookie_secret后再MD5编码。
1.经过测试发现可能模板注入:
//{{}}的用法
2.进一步测试:
datetime是指向python中的同名模块,用来快速访问对象,这里访问的是datetime.so
资料获取得知:cookie_secret在Application对象settings属性中
3.构造payload拿cookie_secret
4.然后计算filehash
5.成功拿下
PS:
1.Tornado入门教程
2.Tornado模板中的Handler
3.SSTI模板注入