攻防世界 Web题--easytornado
一个个文件看过去:
已经可以看出一些端倪了,flag在 /fllllllllllllag 下,但后面需要跟上一个filehash参数,这个参数根据每个文件的名字不同而不同,具体的运算内容是/hints.txt中显示的算式。而要得到flag就应该是这样的式子: file?filename=/fllllllllllllag & filehash=md5(cookie_secret+md5(/fllllllllllllag))
缺的一个量就是cookie_secret,看了看还有两个条件没用,一个是题目提示的tornado以及welcome.txt中的render,看看能不能利用:
Tornado是一个用python编写的网络框架,其中,render方法用于将 模板文件(HTML 模板)与 数据 结合,生成最终的 HTML 页面返回给客户端
这里应该就是利用模板注入了,通过注入特殊的参数来获得值cookie_secret。哪里找模板注入的入口呢?我抓包尝试了下
发现这里有个Location,尝试一下:
成功找到模板注入的入口;上网搜索了下什么可以访问到tornado里的cookie_secret,给的解释有在 RequestHandler 中访问,而handler.settings 包含了 Tornado 应用启动时的所有配置项,这些配置在创建 Application
实例时通过关键字参数传入,并在每个 RequestHandler
实例中通过 self.settings
访问。
得到cookie_secret:3f814ceb-5a64-4c86-8379-eaf2bfda1464
import hashlibcookie='3f814ceb-5a64-4c86-8379-eaf2bfda1464'
file='/fllllllllllllag'file=hashlib.md5(file.encode('utf-8')).hexdigest()
print(file)ans=cookie+file
ans=hashlib.md5(ans.encode('utf-8')).hexdigest()
print(ans)
得到filehash的结果:22df77a980f4e418d0e72c191e2f40a5