php伪协议

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一、伪协议介绍

 1、php://协议

2、php://filter伪协议

3.php://input读取POST数据

4、file伪协议

5、phar://伪协议(读取压缩包文件内容)

6、压缩文件伪协议

6.1.zip://[压缩文件绝对路径]%23压缩文件内的子文件名

6.2.compress.bzip2://file.bz2(同样支持任意后缀名)

6.3.compress.zlib://file.gz(同样支持任意后缀名)

7、data协议

8、http://和https://协议


一、伪协议介绍

PHP伪协议也是php支持的协议和封装协议。

常见的有

  1. file:// 访问本地文件系统
  2. php:// 访问各个输入/输出流
  3. data:// 数据
  4. zip:// 压缩流 不过有些伪协议需要allow_url_fopen和allow_url_include的支持。
  • allow_url_fopen On/Off 允许或禁止打开URL文件
  • allow_url_include On/Off 允许或禁止引用URL文件

 1、php://协议

条件
allow_url_fopen:off/on
allow_url_include :仅php://input php://stdin php://memory php://temp 需要on

作用

  • php:// 访问各个输入/输出流I/O streams在CTF中经常使用的是php://filter和php//input
  • php://filter用于读取源码php://input用于执行php代码。

说明
PHP 提供了一些杂项输入/输出IO流允许访问 PHP 的输入输出流、标准输入输出和错误描述符内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

2、php://filter伪协议

条件
allow_url_fopen=on/off
allow_url_include=on/off

只是读取需要开启 allow_url_fopen不需要开启 allow_url_include
说明
元封装器设计用于"数据流打开”时的"筛选过滤”应用对本地磁盘文件进行读写
①输出进行base64加密后的信息

?file=php://filter/read=convert.base64-encode/resource=xx.php

②获得将base64加密后的信息后再将其解密得出原信息

3.php://input读取POST数据

条件
allow_url_fopen=on/off
allow_url_include=on

说明
可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。 enctype=”multipart/form-data” 的时候 php://input 是无效的

4、file伪协议

file://伪协议用作是展现本地文件系统。 CTF中一般用来读取本地文件或者执行php脚本。 绝对路径和相对路径或者网络路径(http://127.0.0.1/info.php)都可以。不过网络路径就需要allow_url_fopen和allow_url_include都为On。

tips include()/require()/include_once()/require_once()的参数可控的情况下如果导入的文件为非.php文件仍会按照PHP语法进行解析这是include()函数所决定的。

例使用file://伪协议去包含本地的phpinfo.php和flag.txt

<?php
$file = $_GET['file'];
include $file;
?>

payload

?file=file://E:\phpinfo.php
?file=../flag.txt
?file=http://127.0.0.1/flag.txt

5、phar://伪协议(读取压缩包文件内容)

条件
allow_url_fopen: off/on
allow_url_include: off/on (均不受影响)

注php 版本大于等于5.3.0压缩包需要是zip协议压缩rar不行将木马文件压缩后改为其他任意格式的文件都可以正常使用。

?file=phar://压缩包名/内部文件名
例phar://x.zip/x.php

6、压缩文件伪协议

zip:// & bzip2:// & zlib:// 协议 zip://、bzip2://、zlib://都属于压缩流可以访问压缩文件中的子文件更重要的是不需要指定后缀名可以修改为任意后缀jpg、png、gif、xxx等。

6.1.zip://[压缩文件绝对路径]%23压缩文件内的子文件名

?file=zip://[压缩文件绝对路径]#[压缩文件内的子文件名]

例压缩phpinfo.txt为phpinfo.zip将zip改为xxxx包含里面的phpinfo.txt

<?phpinclude ($_GET['file']);

payload

?file=zip://D:\phpstudy_pro\WWW\php-audit\fake_protocol\phpinfo.xxxx%23phpinfo.txt

6.2.compress.bzip2://file.bz2(同样支持任意后缀名)

?file=compress.bzip2://E:\phpinfo.xxx

6.3.compress.zlib://file.gz(同样支持任意后缀名)

?file=compress.zlib://E:\phpinfo.xxx

7、data协议

需要allow_url_include和allow_url_fopen都为On

data://伪协议是数据流封装器传递相应格式的数据。 通常可以用来执行PHP代码。

用法

data://text/plain,
data://text/plain;base64,

 例

<?php

$file = $_GET['file'];
include $file;
?file=data://text/plain,<?php%20phpinfo();?>
?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

8、http://和https://协议

远程包含需要allow_url_fopen和allow_url_include都为On。

允许通过HTTP 1.0的GET方法以只读的方式访问文件或者资源。 CTF中通常用于远程包含。

?file=http:/127.0.0.1/phpinfo.txt

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: php