[护网杯 2018]easy_tornado

拿到靶机后先用dirsearch扫描

但是发现全是429(请求超时)

观察页面的三个链接

/flag.txt

说明了flag在/flllllllag路径中

/welcome.txt

结合题目提示的tornado框架

我们可以知道这里利用了tornado的render参数来渲染模板

tornado render是python中的一个渲染函数,也就是一种模板,可以使用不同的参数来访问网页,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且还可以通过{{}}进行传递变量和执行简单的表达式。

/hints.txt

结合访问链接后的url

这表示服务器需要验证一个 token(通过 md5(cookie_secret + md5(filename)) 生成)才能访问敏感路径(如 /fllllllllllllag)

如果我们直接访问/fllllllllllllag

寻找注入点

故意写错访问格式找出错误提示

发现注入点在msg

通过访问环境变量找到cookie

Tornado的SSTI(服务端模板注入)漏洞源于其模板引擎对用户输入的无过滤动态渲染。当开发者直接通过render_string()或类似函数将用户输入拼接为模板内容时,攻击者可通过注入模板语法执行任意代码。例如:

漏洞示例代码

class VulnHandler(tornado.web.RequestHandler):

def get(self):

user_input = self.get_argument('param')

self.render_string(f"User Input: {user_input}") # 用户输入直接嵌入模板

若用户输入param={{handler.settings}},则会泄露Tornado应用的配置信息(如cookie_secret),这是典型的SSTI攻击场景。

利用脚本计算token

python 复制代码
import hashlib

cookie_secret = "2afe88af-4f02-4cff-a4fd-a56797dc9d6c"  
filename = "/fllllllllllllag"

# 计算 md5(filename)
md5_filename = hashlib.md5(filename.encode()).hexdigest()

# 计算 token
token = hashlib.md5((cookie_secret + md5_filename).encode()).hexdigest()
print(f"token = {token}")  # 例如: "d41d8cd98f00b204e9800998ecf8427e"

获取flag

相关推荐
VidDown5 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频6 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林7 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li8 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook8 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺9 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
看着博客敲代码9 小时前
nikto 扫描报 0 host(s) tested 与 Web 服务器漏洞扫描用法
安全·web安全·网络安全
启观川10 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦10 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python
小羊没烦恼!10 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net