目录
- 前言
- 常见的PHP伪协议
- php://input
- php://filter
- zip://与bzip2://与zlib://协议
- data://
- phar://
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
前言
引用一张比较清晰易懂的图
php伪协议是php自己支持的一种协议与封装协议,简单来说就是php定义的一种特殊访问资源的方法。
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
常见的php伪协议
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下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小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
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编码后的内容
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
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://访问
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
data://
data://协议与php://input 有很点相似的地方。他们都可以通过请求提交的php代码数据配合文件包含函数可以达到代码执行效果,data:// 的成功执行需要php.ini设置allow_url_include 与allow_url_open都为On。
data://协议的格式是: data://数据流封装器,相应格式数据
常见的用法为
data://,
data://text/plain,
data://text/plain;base64,PD9waHAGCGhwaW5mbygpOz8%2b
例:
<?php $a=($_GET["file"]); include($a); ?>
构造data:// 访问
php小编香蕉为您介绍php伪协议基本原理。伪协议是php的一个特性,它允许通过url访问和操作不同资源,如文件、数据库、网络等。伪协议的基本原理是通过特定的url格式来表示不同资源,并将其转化为合适的处理方式。通过伪协议,我们可以方便地访问和操作各种资源,为开发提供了更多的灵活性和便利性。下面我们就来详细了解一下php伪协议的基本原理。
phar://
phar://伪协议在前面phar反序列化的时候学习过,phar也可以对zip格式压缩包进行访问解析。
格式为:phar://绝对路径/phpinfo.zip/phpinfo.php
以上就是PHP伪协议基本原理介绍的详细内容,更多请关注php中文网其它相关文章!
-
2024-04-03 14:10:18
-
2024-04-03 14:10:01
-
2024-04-03 14:07:23
-
2024-04-03 14:07:15
-
2024-04-03 14:04:15
-
2024-04-03 14:04:05
-
2024-04-03 14:03:02
-
2024-04-03 14:01:26
-
2024-04-03 14:00:14
-
2024-04-03 14:00:06