buu[护网杯 2018]easy_tornado

[护网杯 2018]easy_tornado

1.看看题目给了我们三个文件:

/flag.txt

url=?filename=/flag.txt&filehash=98c6aac4fbecf1b8604767afad2b65ef

buu[护网杯 2018]easy_tornado
告诉flag在/fllllllllllllag里面。
把fliename替换后报错:
buu[护网杯 2018]easy_tornado

/welcome.txt

url=?filename=/welcome.txt&filehash=b974cea7b45f12a2d446e8e7843ce2fb

buu[护网杯 2018]easy_tornado

题目是tornado它是一个用Python语言写成的Web服务器兼Web应用框架,而render是python中的一个渲染函数。//也就是一种模板,通过调用的参数不同,生成不同的网页。
这是一些关于python开发的知识,鄙人不才。

召唤大佬:
render函数介绍
tornado模板self.render和模板变量传递

/hint.txt

url=?filename=/hints.txt&filehash=08ce25d3b83efc17e7462e06bc241d71

buu[护网杯 2018]easy_tornado
通过对比这三个文件,访问文件需要把fliename(文件名)MD5编码然后加上cookie_secret后再MD5编码。

1.经过测试发现可能模板注入:

//{{}}的用法
buu[护网杯 2018]easy_tornado

2.进一步测试:

datetime是指向python中的同名模块,用来快速访问对象,这里访问的是datetime.so
buu[护网杯 2018]easy_tornado

资料获取得知:cookie_secret在Application对象settings属性中

3.构造payload拿cookie_secret

buu[护网杯 2018]easy_tornado

4.然后计算filehash

buu[护网杯 2018]easy_tornado

5.成功拿下

buu[护网杯 2018]easy_tornado

PS:
1.Tornado入门教程
2.Tornado模板中的Handler
3.SSTI模板注入