buuctf easy_tornado解题思路
打开题目链接可以看到web里有3条链接
分别是
分析/flag.txt里的可以看到 我们想要的存在”flag in /fllllllllllllag“fllllllllllllag这个文件里了,我们还可以看到我们的url上的参数file?filename=文件路径&filehash=xxxxxx
我们尝试一下拼接url看能否fllllllllllllag里的内容url/file?filename=fllllllllllllag&filehash=xxxxxx结果返回了Error
好像不行,我们先分析其他两个文件内容第二个文件中只给了render这个关键词,通过百度必应查询“render漏洞”再配合题目关键词tornado,发现是python SSTI tornado render的模板注入tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。
然后就是hints.txt里的“md5(cookie_secret+md5(filename))”这段代码,我们可以确定flag.txt、welcome.txt、hints.txt后面的filehash是通过这段代码生成的,而我们想要获取fllllllllllllag就需要先获取到filehash,我们要计算出filehash就要通过上面的“md5(cookie_secret+md5(filename))”代码处理的值,这段代码里的filename我们知道,现在唯一不知道的就是cookie_secret想要知道cookie可能就要通过上面的render(python SSTI tornado render的模板注入)去挖掘了。
那么现在我们的思路就非常清晰了,我们先要通过模板注入从中拿到cookie,再拼接代码生成filehash,从而在url中的两个参数进行拼接访问到fllllllllllllag这个文件
通过查找tornado render的模板注入的利用、tornado的文档和网上大佬们的一些wp,发现cookie_secret存放在settings中的,settings作为参数传入了application构造函数,就可以确定self.application.settings中存放着cookie_secret,又因为根据官方文档记载self.application.settings是RequestHandler.settings的别名,最后Handler指向的处理当前这个页面的RequestHandler对象!!
那么最终的指向如下:
Handler.settings >> RequestHandler.settings >> self.application.settings
最终我们需要获取cookie_secret值,就可以通过“tornado render的模板注入” 构造payload
payload:
msg={{Handler.settings}}
拼接url获取cookie_secret值:
http://43ac0f67-1832-4267-af71-1da44beac6b8.node4.buuoj.cn:81/error?msg={{handler.settings}}
拿到cookie后,对fllllllllllllag文件生成filehash
#coding=utf-8
import hashlib
src = "/fllllllllllllag"
cookie = "7618ae79-e123-4c97-b946-3fef4ddf6804"
filename = hashlib.md5()
filename.update(src.encode("utf-8"))
filename = filename.hexdigest()
cookie_secret = hashlib.md5()
cookie_secret.update((cookie+filename).encode("utf-8"))
cookie_secret = cookie_secret.hexdigest()
print(cookie_secret)
拼接构造url:
http://43ac0f67-1832-4267-af71-1da44beac6b8.node4.buuoj.cn:81/file?filename=/fllllllllllllag&filehash=d3371ba7b88b8564dc8733a4c4fb9a9a
通过最终构造的url访问web即可拿到flag
参考:
https://blog.csdn.net/weixin_44255856/article/details/97687299
https://www.cnblogs.com/xhds/p/12285121.html
https://www.cnblogs.com/chrysanthemum/p/11716903.html
https://blog.csdn.net/qq_45805420/article/details/107876871