我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【网络安全篇】php伪协议-漏洞及其原理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【网络安全篇】php伪协议-漏洞及其原理

🏆今日学习目标:
🍀学习php伪协议
✅创作者:贤鱼
⏰预计时间:35分钟
🎉个人主页:贤鱼的个人主页
🔥专栏系列:网络安全
🍁贤鱼的个人社区,欢迎你的加入 贤鱼摆烂团
🍁如果有需要可以查看下面文章
25分钟了解php?php基础

请添加图片描述

php伪协议

🍀支持为协议的函数

🍁文件包含函数

include();include_once();require();require_once();

举个例子

include(文件名) ;
作用是如果文件名下的文件中有php代码,就会执行php代码,其他的部分直接输出

🍁 文件操作类函数

fopen();file();readfile();file_get_contents();......

举个例子

file_get_contents(文件名);
作用是直接读出文件名下文件的内容

🍀伪协议

🍁 file://

作用是访问本地文件系统

不受allow_url_fopen和allow_url_include影响
用法:

/path/to/file.extrelative/path/to/file.extfileInCwd.extC:/path/to/winfile.extC:\path\to\winfile.ext\\smbserver\share\path\to\winfile.extfile:///path/to/file.ext

🍁 http://https://

作用是访问http(s)网址

文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和allow_url_fopen。
用法:

http://example.com/file.php?var1=val1&var2=val2http://user:password@example.com

可以自己搭建一个网站然后利用漏洞

🍁ftp://

作用:访问ftp(s)URLs

文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和
allow_url_fopen。

用法:

ftp://user:password@example.com/pub/file.txtftps://example.com/pub/file.txt

🍁 php://

作用是访问各个输出输出流

🍁php://input

可以访问亲求的原始数据只读流
可以理解为这一串话整个是一个特殊的文件名,和include搭配的话,因为include可以读取文件名下的内容并且有php代码就执行,可是这个特殊的文件名是找不到的,所以我们就可以自己写文件内容

文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和
allow_url_fopen。

🔥例题讲解:

在这里插入图片描述
做题首先要读懂代码

很明显,这个代码的意思就是说过滤flag,如果没有flag就可以包含文件

具体怎么做呢?
在这里插入图片描述

在这里插入图片描述

上文所说,我们利用php://input可以自己写文件并且执行,那么我们可以传参php://input然后在下面写php代码
在这里插入图片描述

🍁php://filter

php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用

本地文件无论allow_url_fopen,allow_url_include是否开启都可以使用,allow_url_fopen开启时文件操作函数里resource可以是远程的,allow_url_include也开启包含resource才可以是远程的。

用法:

php://filter/read=convert.base64-encode/resource=c:/windows/win.ini

讲解一下每个部分的作用

read是要执行的操作
convert.base64-encode的意思是读出的内容经过一次base64编码
resource后面跟的是读取内容的路径

参数(作为路径的一部分)

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

字符串过滤器

名称描述
string.rot13进行rot13转换
string.toupper将字符全部大写
string.tolower将字符全部小写
string.strip_tags去除空字符、HTML 和 PHP 标记后的结果

编码过滤器

onvert.iconv.utf-8.utf-7将utf-8编码转换为utf-7编码,这样再继续使用base64编码写文件时候,不会因为特殊符号无法新建文件(windows)
convert.base64-encode/convert.base64-decodebase64编码解码
onvert.quoted-printable-encode/convert.quoted-printable-decodequoted-printable 编码解码

🍁 data://

数据流封装器,直接就是数据。

文件操作函数需开启allow_url_fopen,文件包含需同时开启allow_url_include和
allow_url_fopen。

用法

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

第一个就直接执行后面的php代码,第二个的意思是将后面的一串经过base64解码后执行(用来绕过过滤)

🔥例题讲解

在这里插入图片描述
在这里插入图片描述
这里编码完最后其实有一个+,但是如果+不处理就无法执行,所以我们提前url编码一次,+的url编码是%2b
在这里插入图片描述

🍁 compress.zlib:// compress.bzip2:// zip://

用法:

compress.zlib://file.gzcompress.bzip2://file.bz2zip://archive.zip#dir/file.txt

🏆结束语

如果感兴趣,可以订阅一下专栏!!持续更新网络安全方面的内容!!

请添加图片描述

来源地址:https://blog.csdn.net/m0_66623111/article/details/127205193

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【网络安全篇】php伪协议-漏洞及其原理

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

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录