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


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

    请添加图片描述

    🍀支持为协议的函数

    🍁文件包含函数

    include();
    include_once();
    require();
    require_once();
    
    • 1
    • 2
    • 3
    • 4

    举个例子

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

    🍁 文件操作类函数

    fopen();
    file();
    readfile();
    file_get_contents();
    ......
    
    • 1
    • 2
    • 3
    • 4
    • 5

    举个例子

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

    🍀伪协议

    🍁 file://

    作用是访问本地文件系统

    不受allow_url_fopen和allow_url_include影响
    用法:

    /path/to/file.ext
    relative/path/to/file.ext
    fileInCwd.ext
    C:/path/to/winfile.ext
    C:\path\to\winfile.ext
    \\smbserver\share\path\to\winfile.ext
    file:///path/to/file.ext
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    🍁 http://https://

    作用是访问http(s)网址

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

    http://example.com/file.php?var1=val1&var2=val2
    http://user:password@example.com
    
    
    • 1
    • 2
    • 3

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

    🍁ftp://

    作用:访问ftp(s)URLs

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

    用法:

    ftp://user:password@example.com/pub/file.txt
    ftps://example.com/pub/file.txt
    
    • 1
    • 2

    🍁 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
    
    • 1

    讲解一下每个部分的作用

    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=
    
    • 1
    • 2

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

    🔥例题讲解

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

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

    用法:

    compress.zlib://file.gz
    compress.bzip2://file.bz2
    zip://archive.zip#dir/file.txt
    
    • 1
    • 2
    • 3

    🏆结束语

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

    请添加图片描述

  • 相关阅读:
    [项目管理-21]:技术人员向项目管理转变时的几个常见思维误区与困惑:如何管事?如何管人?
    Web前端学习(HTML)学习---下(表格标签,列表标签,表单标签)案例
    05.继承
    数学建模笔记
    小公司的应用服务部署历程
    基于SpringBoot的设备管理系统
    【雷达通信】阵列信号处理(Matlab代码实现)
    【AICFD案例教程】电子机箱风冷散热分析
    Android使用Navigation时如何获取fragment实例及齐公开方法和属性
    qt 自定义控件 :取值范围
  • 原文地址:https://blog.csdn.net/m0_66623111/article/details/127205193