easy_tornado[护网杯 2018]

y4ny4n

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
2
3
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.render('tmep_index.html')

在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 许可协议。转载请注明出处!
此页目录
easy_tornado[护网杯 2018]