Windows
本地文件包含

查看源码
在这里插入图片描述

不存在过滤,可直接读取或执行文件内容
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

源码中存在一些过滤规则,我们只需要进行复写或者大小写转换即可绕过
1、使用绝对路径
在这里插入图片描述

2、使用相对路径复写或者是大小写绕过
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

要求文件变量以file开头,因此远程文件包含失效,只能使用本地文件包含,且需要用到file协议
在这里插入图片描述

Linux

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

因为源码里过滤的是http和https,因此不影响我们使用相对路径和绝对路径
远程文件包含

Shell.php内容
在这里插入图片描述

攻击者访问受害者shell.php文件
在这里插入图片描述

返回受害者信息
在这里插入图片描述


复写绕过既可
在这里插入图片描述
在这里插入图片描述

总结伪协议
伪协议有
file:// 访问本地文件系统
http:// 访问 HTTPs 网址
ftp:// 访问 ftp URL
Php:// 访问输入输出流
Zlib:// 压缩流
Data:// 数据
Ssh2:// security shell2
Expect:// 处理交互式的流
Glob:// 查找匹配的文件路径

其中常用的有
php://filter/read=convert.base64-encode/resourse=…/…/…/1.txt
php://input

文件包含的防御方式
1、设置白名单对传入的参数进行比较
2、过滤危险字符
3、关闭危险设置,比如关闭allow_url_include

Logo

更多推荐