【网络安全篇】php 伪协议 - 漏洞及其原理
🏆今日学习目标:🍀学习 php 伪协议✅创作者:贤鱼⏰预计时间:35 分钟
@TOC
🍀支持为协议的函数
🍁文件包含函数
举个例子
include(文件名) ;作用是如果文件名下的文件中有 php 代码,就会执行 php 代码,其他的部分直接输出
🍁 文件操作类函数
举个例子
file_get_contents(文件名);作用是直接读出文件名下文件的内容
🍀伪协议
🍁 file://
作用是访问本地文件系统
==不受 allow_url_fopen 和 allow_url_include 影响==用法:
🍁 http://https://
作用是访问 http(s)网址
==文件操作函数需开启 allow_url_fopen,文件包含需同时开启 allow_url_include 和 allow_url_fopen。==用法:
可以自己搭建一个网站然后利用漏洞
🍁ftp://
作用:访问 ftp(s)URLs
==文件操作函数需开启 allow_url_fopen,文件包含需同时开启 allow_url_include 和 allow_url_fopen。==
用法:
🍁 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 才可以是远程的。==
用法:
讲解一下每个部分的作用
read 是要执行的操作 convert.base64-encode 的意思是读出的内容经过一次 base64 编码==resource 后面跟的是读取内容的路径==
参数(作为路径的一部分)
字符串过滤器
编码过滤器
🍁 data://
数据流封装器,直接就是数据。
==文件操作函数需开启 allow_url_fopen,文件包含需同时开启 allow_url_include 和 allow_url_fopen。==用法
第一个就直接执行后面的 php 代码,第二个的意思是将后面的一串经过 base64 解码后执行(用来绕过过滤)
🔥例题讲解
这里编码完最后其实有一个+,但是如果+不处理就无法执行,所以我们提前 url 编码一次,+的 url 编码是 %2b
🍁 compress.zlib:// compress.bzip2:// zip://
用法:
🏆结束语
==如果感兴趣,可以订阅一下专栏!!持续更新网络安全方面的内容!!==
版权声明: 本文为 InfoQ 作者【贤鱼很忙】的原创文章。
原文链接:【http://xie.infoq.cn/article/fe9ea7a694a00e4889a6229d5】。未经作者许可,禁止转载。
评论