解题过程
本题涉及到模板注入漏洞,根据题目可知为tornado
所产生的模板注入漏洞,相关知识点可参考文章——BUUCTF/护网杯 easy_tornado 模板注入
首先观察页面,由三个文件链接组成,且由源码得该三个链接都与filehhash
有关:
我们点击文件并使用使用Burpsuite
抓包观察代码:
其中有个If-None-Match
和Etag
,只有当这两个值不同时页面才显示 202 ok,即正确回显:
该页面链接提示flag
在/fllllllllllllag
中,我们接着观察下一个文件链接:
该页面提示了一个render
的东西,百度得render
是tornado
得一个模块,意思是找到模板文件,进行渲染,从而显示页面,即我们可以使用模板注入漏洞,{{}}来显示调用参数。
最后一个页面提示我们filehash
怎么形成,目前关键是找到cookie_secret
参数值,我们通过修改其他页面的filehash
,得到一个回显:
涉及到/error?msg=Error
,即出现了一个msg
参数,这就是给我们进行模板注入的点,我们要得到cookie_secret
,就要利用tornado
中的handler.settings
对象来获取,故我们构造URL为:/error?msg={{handler.settings}}
,得到回显:
其中cookie_secret=e7ebf92d-d3a4-46e7-b9bc-3398cb65c316
接下来就简单了,首先算出/fllllllllllllag
的md5
值:
取32位小写的选项:3bf9f6cf685a6dd8defadabfb41a03a1
并于cookie_secret
合并:e7ebf92d-d3a4-46e7-b9bc-3398cb65c3163bf9f6cf685a6dd8defadabfb41a03a1
再次加密:
得到最终结果: f7ed94a7a14276fc9f70fa21a5304073
,然后构造URL:/file?filename=/fllllllllllllag&filehash=f7ed94a7a14276fc9f70fa21a5304073
,得到页面:
小结
在解题过程中,对改模板并不熟悉,所以不清楚该模板存在的模板注入漏洞,后续经过参考其他文章以及学习该方面的知识,才解出该题目。