广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP伪协议详解
  • 575
分享到

PHP伪协议详解

php 2023-09-09 11:09:42 575人浏览 独家记忆
摘要

PHP伪协议详解 php支持的伪协议 1 file:// — 访问本地文件系统2 Http:// — 访问 HTTP(s) 网址3 ftp:// — 访问 FTP(s) URLs4 php:// —

PHP伪协议详解

php支持的伪协议

1 file:// — 访问本地文件系统2 Http:// — 访问 HTTP(s) 网址3 ftp:// — 访问 FTP(s) URLs4 php:// — 访问各个输入/输出流(I/O streams)5 zlib:// — 压缩流6 data:// — 数据(RFC 2397)7 glob:// — 查找匹配的文件路径模式8 phar:// — PHP 归档9 ssh2:// — Secure shell 210 rar:// — RAR11 ogg:// — 音频流12 expect:// — 处理交互式的流

1 php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

简单通俗的说,这是一个中间件,在读入或写入数据的时候对数据进行处理后输出的一个过程。

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

协议参数

名称描述
resource=<要过滤的数据流>这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表>该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表>该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表>任何没有以 read=write= 作前缀 的筛选器列表会视情况应用于读或写链。

常用:

php://filter/read=convert.base64-encode/resource=index.phpphp://filter/resource=index.php

利用filter协议读文件±,将index.php通过base64编码后进行输出。这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。

而使用的convert.base64-encode,就是一种过滤器。

过滤器

字符串过滤器

该类通常以string开头,对每个字符都进行同样方式的处理。

string.rot13

一种字符处理方式,字符右移十三位。

string.toupper

将所有字符转换为大写。

string.tolower

将所有字符转换为小写。

string.strip_tags

这个过滤器就比较有意思,用来处理掉读入的所有标签,例如XML的等等。在绕过死亡exit大有用处。

转换过滤器

对数据流进行编码,通常用来读取文件源码。

convert.base64-encode & convert.base64-decode

base64加密解密

convert.quoted-printable-encode & convert.quoted-printable-decode

可以翻译为可打印字符引用编码,使用可以打印的ASCII编码的字符表示各种编码形式下的字符。

压缩过滤器

注意,这里的压缩过滤器指的并不是在数据流传入的时候对整个数据进行写入文件后压缩文件,也不代表可以压缩或者解压数据流。压缩过滤器产生命令行工具gzip的头和尾信息。只是压缩和解压数据流中的有效载荷部分。

用到的两个相关过滤器:zlib.deflate(压缩)和 zlib.inflate(解压)。zilb是比较主流的用法,至于bzip2.compressbzip2.decompress工作的方式与 zlib 过滤器大致相同。

加密过滤器

mcrypt.*mdecrypt.*使用 libmcrypt 提供了对称的加密和解密。

更多妙用:https://www.leavesongs.com/PENETRATioN/php-filter-magic.html

利用filter伪协议绕过死亡exit

什么是死亡exit

死亡exit指的是在进行写入PHP文件操作时,执行了以下函数:

file_put_contents($content, ' . $content);

亦或者

file_put_contents($content, '' . $content);

这样,当你插入一句话木马时,文件的内容是这样子的:

 exit();?><?php @eval($_POST['snakin']);?>

这样即使插入了一句话木马,在被使用的时候也无法被执行。这样的死亡exit通常存在于缓存、配置文件等等不允许用户直接访问的文件当中。

base64decode绕过

利用filter协议来绕过,看下这样的代码:

$content = '';$content .= $_POST['txt'];file_put_contents($_POST['filename'], $content);

当用户通过POST方式提交一个数据时,会与死亡exit进行拼接,从而避免提交的数据被执行。

然而这里可以利用php://filter的base64-decode方法,将$content解码,利用php base64_decode函数特性去除死亡exit。

base64编码中只包含64个可打印字符,当PHP遇到不可解码的字符时,会选择性的跳过,这个时候base64就相当于以下的过程:

$_GET['txt'] = preg_replace('|[^a-z0-9A-Z+/]|s', '', $_GET['txt']);base64_decode($_GET['txt']);

所以,当$content 包含 时,解码过程会先去除识别不了的字符,< ; ? >和空格等都将被去除,于是剩下的字符就只有phpexit以及我们传入的字符了。由于base64是4个byte一组,再添加一个字符例如添加字符’a’后,将’phpexita’当做两组base64进行解码,也就绕过这个死亡exit了。

这个时候后面再加上编码后的一句话木马,就可以getshell了。

strip_tags绕过

这个实际上是一个XML标签,既然是XML标签,我们就可以利用strip_tags函数去除它,而php://filter刚好是支持这个方法的。

但是我们要写入的一句话木马也是XML标签,在用到strip_tags时也会被去除。

注意到在写入文件的时候,filter是支持多个过滤器的。可以先将WEBshell经过base64编码,strip_tags去除死亡exit之后,再通过base64-decode复原。

php://filter/string.strip_tags|convert.base64-decode/resource=shell.php

更多绕过方法:file_put_content和死亡·杂糅代码之缘

2 data://

数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。

示例用法:

1data://text/plain,http://127.0.0.1/include.php?file=data://text/plain, 2data://text/plain;base64,http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAGCGhwaW5mbygpOz8%2b

范例

Example #1 打印 data:// 的内容

// 打印 "I love PHP"echo  file_get_contents ( 'data://text/plain;base64,SSBsb3ZlIFBIUAo=' );?>

Example #2 获取媒体类型

$fp    =  fopen ( 'data://text/plain;base64,' ,  'r' );$meta  =  stream_get_meta_data ( $fp );// 打印 "text/plain"echo  $meta [ 'mediatype' ];?>

3 file://

用于访问本地文件系统,并且不受allow_url_fopen,allow_url_include影响
file://协议主要用于访问文件(绝对路径、相对路径以及网络路径)
比如:http://www.xx.com?file=file:///etc/passsWord

4 php://

在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用
php://作用为访问输入输出流

5 php://input

php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

例如:
http://127.0.0.1/cmd.php?cmd=php://input
POST数据:
注意:
当enctype="multipart/fORM-data"的时候 php://input` 是无效的

遇到file_get_contents()要想到用php://input绕过。

6 zip://

zip:// 可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。

zip://中只能传入绝对路径。要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23(即下述POC中#要用%23替换)只需要是zip的压缩包即可,后缀名可以任意更改。相同的类型的还有zlib://和bzip2://

在这里插入图片描述

参考链接:

php伪协议实现命令执行的七种姿势

PHP伪协议总结

来源地址:https://blog.csdn.net/cosmoslin/article/details/120695429

--结束END--

本文标题: PHP伪协议详解

本文链接: https://www.lsjlt.com/news/401301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP伪协议详解
    PHP伪协议详解 php支持的伪协议 1 file:// — 访问本地文件系统2 http:// — 访问 HTTP(s) 网址3 ftp:// — 访问 FTP(s) URLs4 php:// — ...
    99+
    2023-09-09
    php
  • PHP伪协议filter详解,php://filter协议过滤器
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2023-08-31
    php 网络安全 人工智能 ai
  • [CTF/网络安全] 攻防世界 Web_php_include 解题详析(php伪协议、data伪协议、file伪协议)
    [CTF/网络安全] 攻防世界 Web_php_include 解题详析 代码审计PHP_include文件包含漏洞及伪协议PayloadPHP伪协议恶意 PHP 伪协议data伪协议恶意 d...
    99+
    2023-10-18
    web安全 CTF php 网络安全
  • PHP伪协议
    PHP伪协议 一、伪协议介绍 PHP伪协议,也是php支持的协议和封装协议。 常见的有: file:// 访问本地文件系统php:// 访问各个输入/输出流data:// 数据zip:// 压缩...
    99+
    2023-08-31
    php
  • PHP-伪协议
    伪协议 常用场景:文件包含 ,文本包含 常用的伪协议有 php://filter 读取文件源码 (协议可以对打开的数据流进行筛选和过滤,常用于读取文件源码) php://input 任意代码执行;这种伪协议用于读取原始的 HTTP POST...
    99+
    2023-09-01
    php 开发语言
  • PHP 伪协议
    常见的php伪协议 file://                         访问本地文件系统php://                        访问输入输出流data://                       数...
    99+
    2023-09-03
    php 开发语言
  • php伪协议总结
    php伪协议总结 概述 PHP伪协议,也是php支持的协议和封装协议 常见的伪协议有: php://访问各个输入输出流file://访问本地文件系统data://获取数据(RFC 2397)zip:/...
    99+
    2023-09-21
    php web安全
  • [php知识点]PHP伪协议
    目录 一、前言 1、什么是PHP伪协议2、什么时候用PHP伪协议 include和require函数include和include_once的区别(require与require_once的...
    99+
    2023-09-03
    php 开发语言
  • php://filter伪协议(总结)
    前言 这篇文章主要是关于php://filter伪协议中的知识点总结,分析了常见的用法 文章目录 前言php://filter伪协议总结php://filter伪协议介绍php://filte...
    99+
    2023-08-31
    php 开发语言 web安全 安全
  • php伪协议实现命令执行详情
    目录1.file://协议2.php://协议3.data://协议4.zip:// & bzip:// & zlib:// 协议总结1.file://协议 条件: ...
    99+
    2022-11-13
  • PHP Filter伪协议Trick总结
    PHP Filter伪协议Trick总结 前言:最近在学习的过程中碰到了很多的filter协议的小trick,在此做一个总结以及对filter协议的一些探索。 PHP Filter协议介绍 ​ php...
    99+
    2023-10-18
    安全
  • PHP伪协议基本原理介绍
    目录前言常见的php伪协议php://inputphp://filterzip://与bzip2://与zlib://协议data://phar://前言 引用一张比较清晰易懂的图 ...
    99+
    2022-11-16
    PHP伪协议 PHP伪协议原理
  • Telnet协议详解
    目录 1、Telnet协议 2、telnet协议的基本概念 1、NVT(Network Virtual Terminal)网络虚拟终端  2、telnet连接 3、telnet的C/S模式 3、telnet的工作原理 1、Telnet协议 ...
    99+
    2023-09-09
    服务器 网络 linux
  • FTP协议详解
    文章目录 1 FTP概述2 实验环境3 FTP详解3.1 文件传输过程3.2 报文格式3.3 数据连接3.4 主动模式3.5 被动模式3.6 匿名服务器 4 总结 链接: C/C...
    99+
    2023-10-06
    服务器 网络 linux
  • DHCP协议详解
    DHCP是什么 1.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap P...
    99+
    2023-10-12
    网络 服务器 网络协议 DHCP DHCP6 Powered by 金山文档
  • https协议详解
    目录HTTPS协议概念HTTPS通信(握手)过程HTTPS的优缺点优点:缺点:HTTPS如何保证安全对称加密:非对称加密:TLS/SSL的工作原理TLS/SSL概述TLS/SSL功能...
    99+
    2022-11-13
    什么是https协议 HTTPS协议详解 HTTPS协议基础知识
  • ARP协议详解
    目录 ARP概述ARP协议的定义物理地址逻辑地址为什么需要2级地址 ARP工作原理如何建立ARP高速缓存使用ARP协议的4种不同情况高速缓存的生存周期 ARP报文格式封装ARP协议抓包分析抓取ARP请求报文抓取ARP响应报文...
    99+
    2023-08-21
    网络 服务器 linux 网络协议
  • 攻防世界————fileclude(内含php伪协议菜鸟讲解)
    先进去发现为一坨php代码,新手勉勉强强看得懂  接下来我们分析代码 WRONG WAY! ...
    99+
    2023-09-12
    servlet 服务器 java
  • 文件包含及PHP伪协议怎么用
    今天小编给大家分享一下文件包含及PHP伪协议怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。文件包含文件包含漏洞是“代码...
    99+
    2023-06-30
  • CTF常用伪协议总结
    PHP伪协议 file://协议 用来读取本地的文件,当用于文件读取函数时可以用。 常见检测是否存在漏洞写法: www.xxx.com/file=file:///etc/passwd 此协议不受al...
    99+
    2023-09-21
    php 安全 web安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作