前言
本题涉及到的知识点有,Tornado 的 SSTI 漏洞、Tornado 中的 cookie_secret 值 以及 Python3 中的 hashlib 模块。
首先大概的介绍一下 Tornado 的相关概念。
Tornado
Tornado 是使用 Python 开发的全栈式(full-stack)Web 框架和异步网络库。与以前提到过的 Flask 一样都是 Python 的一种 Web 开发框架。
Tornado render 模板注入
Tornado render 是 Python 中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对 render 内容可控,不仅可以注入 XSS 代码,而且还可以通过 { {}} 进行传递变量和执行简单的表达式。模板注入的相关概念在以前的文章中已经提到过,在这里就不再赘述。
由于本人对于这些框架的了解几乎为零… So,关于 SSTI in Tornado 的分析可以参考博客 Python中从服务端模板注入到沙盒逃逸的源码探索 (一) 或者 python SSTI tornado render模板注入(PS. 这篇博客写的一点都不通畅…读起来好费力啊…)
接下来具体分析分析题目。
打开题目可以看到有三个文件,逐一访问,内容如下:
- /flag.txt
- /welcome.txt
- /hints.txt