给看一下环境代码:
很简单的一个文件包含,看一下PHP中支持的伪协议的函数:
include、require、include_once、require_once、highlight_file,show_source 、readfile 、file_get_contents 、fopen 、file……可以看出这函数在写的时候都可以通过输入相关的一些路径执行操作,我们常见的伪协议有:
file:// 访问本地文件系统
http:// 访问 HTTP(s) 网址
ftp:// 访问 FTP(s) URLs
php:// 访问各个输入/输出流(I/O streams)
zlib:// 压缩流
data:// 数据(RFC 2397)
glob:// 查找匹配的文件路径模式
phar:// PHP 归档
ssh2:// Secure Shell 2
rar:// RAR
ogg:// 音频流
expect:// 处理交互式的流
协议利用:
1.php://filter
php://filter用于读取源码,php://input用于执行php代码
?var=php://filter/read=convert.base64-encode/resource=index.php
此方法通过php://filter可以读取系统任意文件并显示为base64,通过相应的解码工具即可获取正常的内容:
2.file:// — 访问本地文件系统
此协议可以直接将文件文本打印在屏幕上
利用:
?var=file:///var/www/html/flag
我试了一下无法直接获取当当前文件路径,位置需要从根目录开始写。