文件包含漏洞

本文详细介绍了PHP中的文件包含漏洞,包括本地和远程文件包含的区别,以及php.ini的相关配置参数。通过实例展示了如何利用file、php://input、data等伪协议进行文件包含攻击,并提到了防御措施,如长度截断。此外,还探讨了如何通过payloads读取文件源码和执行命令。
摘要由CSDN通过智能技术生成

文件包含漏洞,为了减少重复代码的编写,引入了文件包含函数,通过文件包含函数将文件包含起来,简单的说就是一个文件里面包含另一个或多个文件

php中的文件包含分为本地文件包含和远程文件包含

本地包含呢故名思意就是发生在服务器本身的,只要所包含的文件符合php语法规范都能被当成php解析,无论任何格式,例如:txt

远程文件包含则需要确定php是否开启  ''  allow_url_include  '' (on/off)  在php.ini配置文件中,在本地靶场测试时记得开启

php文件的包含函数

php提供了四个文件包含的函数:include()   include_once()   require()和require_once()

include 在找不到包含的文件时只会产生警告,脚本将继续执行

include_once    和include唯一区别就是只包含一次

require:找不到包含文件时会产生致命错误,并停止脚本

require_once: 同样和require区别就是只包含一次

php伪协议介绍:

file://    访问本地文件系统

http://   访问HTTP/S网址

ftp://        访问FTP/sURLS

PHP://   访问各个输入输出流

ZLIB://   压缩流

data://          数据

php.ini参数设置:

在php.ini里有两个重要参数allow_url_fopen、allow_url_include

allow_url_fopen:默认值时ON,允许url里的封装协议访问文件

allow_url_include:默认值时OFF,不允许包含url里的封装协议文件

下面举几个简单的例子:就用在本地搭建的dwva靶场来看一下。

先把难度调到最简单的low

http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=file1.php

点击file1.php发现url改变,由于我们提前知道源代码方便测试就在上一层目录创建了一个txt文件里面写好phpinfo代码。

payload:http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=../1.txt

php://input用法

input可以访问请求的原始数据的只读流,将post请求的数据当做php代码执行

php://input:同时post想设置的文件内容,php执行时也会将post当作文件内容

我们也可以写入一句话木马方法同上:

 没有报错就是成功了可以用菜刀进行连接

 我这里就不用工具连接了可以看到可以执行命令

file协议:file协议支持大部分语言,用于访问本地文件系统,当指定了一个相对路径不以/\或者Windows盘符开头的路径,则提供的路径基于当前的工作目录

file://  文件的绝对路径和文件名

file:// 文件的相对路径和文件名

注意:file协议在利用的时候需要完整的路径

payload:http://127.0.0.1/DVWA-master/vulnerabilities/fi/?page=file:///C:/1.txt

 还有一种data协议php特有的

payload:127.0.0.1/***/****/?page=data://text/plain,<?php phpinfo();?>

data://text/plain,

直接读取文件源码

filter:封装协议

payload:http://127.0.0.1/index.php?page=php://filter/read=convert.base64-encode/resource=1.txt

这样读出来的时base64编码过的防止在读取的时候发生乱码

 剩下的就不一一举例了,在测试当中可能会出先失败在有限制的情况下比如强制在后面加上html,造成解析失败,在php版本小于5.3.4的前提下可以用%00截断

最常用的应该就是长度截断了,Windows下“./”长度大于256,Linux大于4096就可以,有点类似垃圾数据溢出

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我像一条狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值