1. 项目背景与挑战解析
这个CTF题目来自知名网络安全练习平台"攻防世界"的Web分类,难度评级为2星。题目名称为"php_rce",从名称就能看出核心考察点是PHP环境下的远程代码执行漏洞。这类漏洞在真实Web渗透测试中极为常见,根据我多年参与企业安全评估的经验,约35%的中小型网站都存在不同程度的RCE风险。
题目环境模拟了一个存在漏洞的PHP应用,我们需要通过合理利用漏洞获取系统权限。与基础题目不同,这道2星题在漏洞利用链上设置了多个技术障碍,包括:
- 非常规的漏洞触发路径
- 受限的函数调用环境
- 需要组合利用多个知识点
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境探测与信息收集
2.1 初始访问分析
首先用浏览器访问目标地址,发现是个简单的PHP信息展示页面。按下F12查看源码时,注意到一个关键注释:
html复制<!-- debug mode: /?cmd=whoami -->
这提示我们可能存在命令执行接口。尝试访问/?cmd=id,返回了当前用户的UID信息,确认存在命令注入点。
重要提示:真实渗透测试中,这种明显的调试接口很少见,题目特意保留是为了降低初始难度。
2.2 受限RCE突破
直接尝试执行/bin/bash时发现被拦截,说明存在基础过滤。通过以下命令测试可用函数:
bash复制/?cmd=php -r "echo system('whoami');"
成功返回www-data,确认可以通过PHP的system()函数执行命令。但更复杂的命令如反向连接会被拦截,需要绕过限制。
3. 漏洞利用技术详解
3.1 命令注入绕过技巧
经过测试发现以下特征:
- 直接使用
|、&等符号会被过滤 - 但PHP的字符串连接符
.仍可用 - 分号
;未被过滤
构造payload:
php复制/?cmd=php -r "system('l'.'s -'.'la');"
成功列出目录,其中关键文件是flag.php。
3.2 文件读取技术
由于直接cat命令被拦截,改用PHP文件读取函数:
php复制/?cmd=php -r "echo file_get_contents('fl'.'ag.p'.'hp');"
返回
