easy_tornado[护网杯 2018]
tornado与ssti模版注入
解题过程
发现三个文件,点开后发现访问文件需要对应的文件名和md5值
flag.txt中提示 flag in /fllllllllllllag 知道文件名为 /fllllllllllllag
(这里还以为flag在 /fllllllllllllag路径下的flag.txt,原来是包含flag的文件TnT
hints.txt发现对应md5值生成方法md5(cookie_secret+md5(filename))
得想办法知道cookie_secret
由于之前直接访问file?filename=/fllllllllllllag 会报错,然后看wp知道会直接显示msg的内容
这时候直接/error?msg=得到cookie_secret
hashlib.md5(b'9d25ecb4-2999-47e8-b766-0154e448e7b9'+hashlib.md5(b'/fllllllllllllag').hexdigest().encode()).hexdigest()得到最终md5值
访问传filename值和对应的md5值即可获得flag
tornado的SSTI(模版注入)
学习出处:
https://www.cnblogs.com/bmjoker/p/13508538.html
https://www.cnblogs.com/jingqi/p/8024873.html
使用render方法渲染模板
1 | class IndexHandler(tornado.web.RequestHandler): |
在tornado模板中,存在一些可以访问的快速对象,比如 { {escape(handler.settings[“cookie”])} },这个其实就是handler.settings对象,里面存储着一些环境变量
{ { } } 表达式用双大括号包围,内容可以是任何python表达式 ,在双大括号中的单词是占位符,双大括号中放置变量名或表达式,变量名与传入的关键字参数名要相同(如果不使用{ { } }表达式,直接显示输入的字符串
这里大括号都隔开了是因为hexo的蜜汁报错(Nunjucks Errors ),Nunjucks会把大括号识别为自己的语法
- 本文标题:easy_tornado[护网杯 2018]
- 本文作者:y4ny4n
- 创建时间:2020-11-30 21:45:01
- 本文链接:https://y4ny4n.cn/2020/11/30/easy-tornado/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!