CISCN2019 - Web - Web11

AI-摘要
Microsoft Xiaoice's GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
CISCN2019 - Web - Web11
Hunter题目信息
| 项 | 内容 |
|---|---|
| 比赛 | CISCN2019 华东南赛区 |
| 方向 | Web |
| 难度 | Easy |
| 环境 | 授权靶场(已脱敏) |
| 漏洞类型 | Smarty SSTI(模板注入)/ 源码信息泄露(未确认) |
信息收集
- 环境访问类型为 HTTPS(nc_ssl),占位地址统一记作
http://target:8080(授权靶场,已脱敏)。 - 访问首页,页面标题为
A Simple IP Address API,是一个简单的 IP 查询 API 页面。 - 页面中有一处
Current IP:字段,回显客户端的 IP(通过X-Forwarded-For头控制)。
漏洞分析
注入点判断
X-Forwarded-For 头会原样回显在页面中(Current IP:<XFF值>),疑似模板注入点。测试 X-Forwarded-For: 7*7,页面回显 7*7(未被解析为 49),说明不是简单的表达式求值。
源码线索
WP 记录访问首页时,响应源码中存在一处疑似硬编码的 PHP 变量(值已脱敏):
1 | $flag="flag{xxxx}"; |
该变量被描述为直接渲染到页面 HTML 中;但本环境访问需经 HTTPS/nc_ssl 通道,复现环节未能稳定拿到该值,故不作为已确认结论。
利用过程
公开 WP 描述的标准解法(Smarty SSTI)
公开题解的思路是通过控制 X-Forwarded-For 头向模板注入 Smarty 标签:
1 | X-Forwarded-For: {if readfile('/flag')}{/if} |
原理:Smarty 3.1 中 {php} 标签已废弃,但 {if} 条件判断内可直接执行 PHP 函数。
本环境复现情况
- 构造 XFF 注入后,页面回显内容未按预期解析,模板注入链未能打通。
- 环境依赖 HTTPS/nc_ssl 访问,普通 HTTP 请求与提交通道不稳定。
- 平台未返回 accepted 记录,本题按未解出处理。
完整 EXP
复现尝试(访问首页查看响应源码,值已脱敏):
1 | import requests, urllib3 |
公开题解给出的 XFF 注入载荷(仅作原理记录,未在本环境验证成功):
1 | GET / |
Flag
(未解出 / 未获取)。本题按 manifest 标记为 unresolved=true,平台未确认解出,此处不编造 flag;文中出现的 flag 形态字符串均已脱敏为 flag{xxxx}。
踩坑与总结
| 要点 | 说明 |
|---|---|
| 环境 | HTTPS(nc_ssl),占位写 http://target:8080(授权靶场,已脱敏) |
| 注入点 | XFF 头原样回显,7*7 未解析,SSTI 未确认 |
| 公开解法 | Smarty {if} 内执行 PHP 函数读文件,本环境未复现成功 |
| 状态 | 未解出,无 accepted 记录 |
- 先验证回显是否可解析:
7*7不被解析时不要直接套 SSTI 载荷,需确认模板引擎与实际版本。 - 源码线索不等于已解题:响应里出现 flag 形态字符串仍需平台确认,未确认前不写作已获取。
- 访问通道差异:nc_ssl/HTTPS 环境与常规 HTTP 复现脚本行为不同,是本题卡点之一。
- 按契约,未解出题的 Flag 段如实写「未解出 / 未获取」,禁止编造 flag。
待补充:确认 XFF 注入在目标 Smarty 版本下的实际解析行为,完成平台提交。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果








