文件包含漏洞

一、文件包含函数:

将外部文件的内容引入当前环境:#include

include

require

include_once

require_once

hightlight_file

show_source

readfile

file_get_contents

fopen

file

php文件包含函数:

出现上面形式的文件包含函数,就存在文件包含漏洞

  1. 包含文件是php,则解析执行
  2. 内容是普通文本,读取到文件内容

文件包含漏洞大多使用到php伪协议

二、PHP 伪协议

1.file://协议

用于访问本地文件系统,在ctf中通常用来出去本地文件

使用方法:

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

file=file://D:/soft/phpStudy/WWW/phpcode.txt

2.php://input协议

可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 

  • 就是将post的内容作为文件的内容,此协议可以间接的控制文件里的内容

3.phar://伪协议

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

用法:?file=phar://压缩包/内部文件

                   phar://xxx.png/shell.php

4.zip://伪协议

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

使用方法: 

•?file=zip://[xxx]#[压缩文件内的子文件名]   

          zip://xxx.png#shell.php。

5.php://filter 本地磁盘文件进行读取

用于服务器上的文件内容读取

使用方法: 

•?filename=php://filter/convert.base64-encode/resource=xxx.php 

•?filename=php://filter/read=convert.base64-encode/resource=xxx.php

三、实例

使用php://input伪协议与上传漏洞结合,将post的内容作为上传文件的内容

如果原本是get请求,需要抓包改成post请求

文件包含漏洞_第1张图片

你可能感兴趣的:(php,php伪协议)