1. 题目背景与核心考察点
这道来自CTF竞赛平台"攻防世界"的Web题目"Web_php_include",主要考察选手对PHP文件包含漏洞的深入理解和实际利用能力。这类题型在CTF比赛中非常典型,涉及以下几个关键知识点:
- PHP文件包含函数的安全隐患(include/require)
- 伪协议(php://filter)的利用技巧
- 代码审计与绕过技巧
- 服务器配置缺陷的发现与利用
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与初步侦查
2.1 题目界面分析
启动题目环境后,我们看到的页面源码中通常包含类似这样的代码片段:
php复制<?php
show_source(__FILE__);
include($_GET['file']);
?>
这段代码暴露出两个关键信息:
- 使用了include函数动态包含文件
- 文件路径通过GET参数file直接传入
2.2 基础漏洞测试
首先尝试最基本的文件包含测试:
code复制?file=../../../../etc/passwd
如果返回系统文件内容,说明存在目录遍历漏洞。但现代PHP环境通常会有限制,我们需要更高级的利用方式。
3. PHP伪协议深度利用
3.1 php://filter协议解析
当直接文件包含被限制时,php://filter协议是突破的关键。其基本语法为:
code复制php://filter/convert.base64-encode/resource=目标文件
这个协议链的工作流程:
- 读取resource指定的文件
- 通过convert.base64-encode过滤器处理
- 输出base64编码后的内容
3.2 实际利用演示
尝试读取当前目录下的index.php:
code复制?file=php://filter/convert.base64-encode/resource=index.php
获取到base64编码后,使用以下命令解码:
bash复制echo "PD9waHAK..." | base64 -d
4. 进阶绕过技巧
4.1 路径截断技术
当服务器对包含文件后缀有校验时,可以尝试:
code复制?file=php://filter/con
