首先启动环境,打开靶机地址:
看到有三个txt文件的超链接,全部点进去看看:
第一个里面告诉我们一个有用的信息flag在/fllllllllllllag文件中
第二个内容好像没什么用
第三个里面发现md5计算
md5(cookie_secret+md5(filename))并且三个文件中都存在filehash
根据上面的信息基本猜测要找到cookie_secret并结合公式计算md5的值,
并且falg在在/fllllllllllllag文件中知道file?filename=/fllllllllllllag,这些相结合就能找到flag
(到这里暂时没有是没思路了,试了试改变地址栏的数据发现不行,又看到题目是easy_tornado 1;tornado是python的一个模板,可以看出这道题是模板注入类的题目,上网搜了一下,发现模板注入必须通过传输型如{{xxx}}的执行命令)
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量。
于是乎直接用
error?msg={{handler.settings}},对
cookie_secret进行爆破
找到cookie_secret的值了,接着根据公式进行md5的加密md5(cookie_secret+md5(filename))
拼接后进行md5加密后得到filehash的值:65ef64cd329dac1ddf33890f1af10def(每个人的应该不同吧)
最后构建的payload是:
file?filename=/fllllllllllllag&filehash=65ef64cd329dac1ddf33890f1af10def
(千万别把file丢了,我就是丢了整了好几次都报错,最后还是得到了flag)
flag:flag{0755a4d9-687b-44ef-b86b-f619f5cf9837}
最后成功提交