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

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

本地文件包含:只要内容中带有<?php ?>即可解析成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.设置白名单

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容