zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]Secret File

    0x01

    进入页面如下

    看不到什么东西,所以查看源码

    源码中发现有一个链接到另一个页面,原页面为黑色看不到链接,所以我们转到链接给的页面

    有一个按钮,点击看看

    发现点击之后直接跳到了end.php页面,查看源码也没有什么有用的东西,应该是时间过短然后就跳转,所以我们用抓包截断一下,发现结果如下

    验证了我的想法,存在这个页面,直接进去看看

    0x02

    <html>
        <title>secret</title>
        <meta charset="UTF-8">
    <?php
        highlight_file(__FILE__);
        error_reporting(0);
        $file=$_GET['file'];
        if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
            echo "Oh no!";
            exit();
        }
        include($file); 
    //flag放在了flag.php里
    ?>
    </html>
    

    给出了一段html代码,存在inculde函数,看来需要用到文件包含来读取文件,先简单尝试一下

    直接查看会出现这样的结果,查看页面源代码也没有任何东西,看来无法直接查看内容

    通过对html代码的审计我们发现,代码过滤了data协议,input协议,ftp协议,当然还有一些协议它没有过滤,所以这里我们可以用伪协议文件包含来读取flag

    0x03

    file://		访问本地文件系统
    http://		访问 HTTPs 网址
    ftp://		访问 ftp URL 
    Php://		访问输入输出流
    Zlib://		压缩流
    Data://		数据
    Ssh2://		security shell2 
    Expect://		处理交互式的流
    Glob://		查找匹配的文件路径
    

    这里尝试file协议直接读取,发现无法读取

    所以尝试php伪协议,那么php://input也是被过滤了,所以这里唯一没有过滤的就是php://filter伪协议,所以这里我们使用该伪协议进行flag读取

    payload:

    ?file=php://filter/convert.base64-encode/resource=flag.php 
    

    将读取到的内容base64解密得到flag

    总结

    考察伪协议和代码审计,就是常见的伪协议的运用

  • 相关阅读:
    HeidiSQL 导入Excel数据
    两片74门实现的双边沿D触发器
    java多线程
    java集合框架
    java异常处理
    java基础学习5
    java基础学习4
    Java基础学习3
    Java基础学习2
    LeetCode 184场周赛
  • 原文地址:https://www.cnblogs.com/Jleixin/p/13283704.html
Copyright © 2011-2022 走看看