【护网杯2018】-攻防世界web-高手进阶区-easytornado
思路
url形如http://159.138.137.79:55925/file?filename=/welcome.txt&filehash=bfa0e94f85fe24936b59f8e75a2c8bb8
,既然说了flag
在/fllllllllllllag
,那前半部分就有了。
filehash计算方法:md5(cookie_secret+md5(filename))
,问题就是要拿到cookie_secret
。
tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。
GOGOGO
尝试直接输入/fllllllllllllag返回error,修改error的msg值为{{2}}
,返回2,修改msg值为{{2*3}}
,返回orz,说明操作符被过滤。
现在要拿到tornado中的cookie,用的就是handler.settings
对象,handler 指向RequestHandler
,而RequestHandler.settings
又指向self.application.settings
,所有handler.settings
就指向RequestHandler.application.settings
了。传递error?msg={{handler.settings}}
,得到cookie_secret
为84cfe5dc-0065-4cf6-83a7-e574a2210e8c
。
/fllllllllllllag
的MD5值:3bf9f6cf685a6dd8defadabfb41a03a1
(取32位!!) https://md5jiami.51240.com/
坑
/fllllllllllllag
不是/fllllllllllllag.txt
原文:https://www.cnblogs.com/poziiey/p/12703616.html