2019-09-02 文件包含和几个伪协议

本地文件包含和远程文件包含:

本地文件包含:只要内容中带有即可解析成php文件执行。即使包含的文件后缀是.txt或是.jpg等。

远程文件包含:需要allow_url_fopen=on和allow_url_include=on才能进行包含。不能解析后缀为php可解析的文件。例如.php、php3等都是不行的。可以利用伪协议进行文件读写等操作。

常见的几个伪协议:php://  file:// zip://  phar://  data:

今日实践的三个伪协议:php://  file:// data:

一、php://filter和php://input

php://filter/resource=可以将非php代码文件内容直接输出。php代码文件直接执行。在读取文件时可以利用php://filter/read=convert.base64-encode/resource=将文件base64编码再进行包含,不会再被执行,可以直接输出文件内容的base64编码。解码即可获取文件内容。

php://input可以利用post方式传入命令执行

二、file://

file://和php://filter很相似。但是只能依靠绝对路径查看文件内容。

三、data:

类似于php://input,直接执行输入的命令。


关于文件包含防护:

1. 利用open_basedir =  限制用户访问路径。

2. allow_url_include = Off 和 allow_url_fopen=Off

3.注意伪协议的滥用

4.设置白名单

你可能感兴趣的:(2019-09-02 文件包含和几个伪协议)