做的比较唯美的网站,西安建设企业网站,网站首页布局分析,wix做的网站能扒下来PHP伪协议详解 一、前言1.什么是PHP伪协议#xff1f;2.什么时候用PHP伪协议? 二、常见的php伪协议php://inputphp://filterzip://与bzip2://与zlib://协议data://phar:// 一、前言
1.什么是PHP伪协议#xff1f;
PHP伪协议是PHP自己支持的一种协议与封装协议#xff0c;… PHP伪协议详解 一、前言1.什么是PHP伪协议2.什么时候用PHP伪协议? 二、常见的php伪协议php://inputphp://filterzip://与bzip2://与zlib://协议data://phar:// 一、前言
1.什么是PHP伪协议
PHP伪协议是PHP自己支持的一种协议与封装协议简单来说就是PHP定义的一种特殊访问资源的方法。
有些伪协议成功执行需要allow_url_fopen和allow_url_include的支持。
allow_url_fopen On/Off 允许或禁止打开URL文件 allow_url_include On/Off 允许或禁止引用URL文件 2.什么时候用PHP伪协议?
文件包含的时候可能遇到的文件包含函数 1、include 2、require 3、include_once 4、require_once 5、highlight_file 6、show_source 7、flie 8、readfile 9、file_get_contents 10、file_put_contents 11、fopen (比较常见) 二、常见的php伪协议
php://input
php://input 是个可以访问请求的原始数据的只读流获取POST请求数据的协议
当enctype”multipart/form-data” 的时候 php://input 是无效的。
php://input 伪协议 成功执行前提 php.ini 中的 allow_url_include设置为On
格式示例
php
?php
include($_GET[file]);
?php://filter
php://filter 是一种元封装器 设计用于数据流打开时的筛选过滤应用。 这对于一体式all-in-one的文件函数非常有用类似 readfile()、 file() 和 file_get_contents() 在数据流内容读取之前没有机会应用其他过滤器。
在利用上很多都是与包含函数结合使用读入或者输出获取文件源码然后编码让其不执行从而输出
php://filter 的使用 如 php://filter/readconvert.base64-encode/resourceindex.php php://filter/resourceindex.php
php://filter 伪协议组成 read读链的筛选列表 resource要过滤的数据流 write写链的筛选列表 php://filter/read处理方式base64编码rot13等等/resource要读取的文件
read 对应要设置的过滤器 常见的过滤器分字符串过滤器、转换过滤器、压缩过滤器、加密过滤器 其中convert.base64-encode convert.base64-decode都属于 转换过滤器
格式示例
?php
$a($_GET[file]);
echo(file_get_contents($a));//获取文件内容
?zip://与bzip2://与zlib://协议
zip:// 等属于压缩流的协议通过直接压缩普通文件为zip文件再通过zip:// 协议读取可以直接执行php代码。压缩后的zip文件可以随意修改后缀也不影响zip://协议读取。注意是如phpinfo.txt直接压缩为zip,而不是文件夹压缩zip
格式示例
?php
$a($_GET[file]);
include($a);
?
压缩及协议访问格式
压缩文件为.zip后缀 zip://绝对路径/phpinfo.zip%23phpinfo.php 压缩文件为.bz2后缀 compress.bzip2://绝对路径/phpinfo.zip/phpinfo.php 压缩文件为.gz后缀 compress.zlib://绝对路径/phpinfo.zip/phpinfo.php data://
data://伪协议可以通过请求提交的php代码数据配合文件包含函数可以达到代码执行效果。
data://伪协议 成功执行前提 php.ini设置allow_url_include 与allow_url_open都为On。
data://协议的格式是: data://数据流封装器,相应格式数据
格式示例
?php
$a($_GET[file]);
include($a);
?phar://
phar://伪协议可以对zip格式压缩包进行访问解析
格式示例
phar://绝对路径\phpinfo.zip\phpinfo.php注意这里与zip://不同的地方是phar访问压缩包内容是通过/访问而zip是通过#访问 Python老吕提醒 使用这些伪协议时需要注意PHP配置和服务器环境的限制某些协议可能因为配置或安全原因被禁用。 特别是在处理外部资源如HTTP或FTP时需要注意安全性确保不会暴露敏感信息或遭受注入攻击。 在使用 data://、phar:// 等伪协议时应特别注意数据的验证和清洁以避免安全漏洞。