• BugKu 备份是个好习惯


    题目链接

    题目说备份是个好习惯,那么到底备份了什么那?打开页面,也就一串字符,看样子应该是MD5。看来备份的东西,不在页面里,会不会是一个.bak文件?用大佬写的脚本(链接),爆得了index.php文件和index.php.bak文件,好了备份的文件出现了。访问该备份文件,发现直接可以下载,下载下来分析,是php代码。

    <?php
    /**
     * Created by PhpStorm.
     * User: Norse
     * Date: 2017/8/6
     * Time: 20:22
    */
    
    include_once "flag.php";
    ini_set("display_errors", 0);
    $str = strstr($_SERVER['REQUEST_URI'], '?');
    $str = substr($str,1);
    $str = str_replace('key','',$str);
    parse_str($str);
    echo md5($key1);
    
    echo md5($key2);
    if(md5($key1) == md5($key2) && $key1 !== $key2){
        echo $flag."取得flag";
    }
    ?>
    

    一番分析,大概就是,会获得输入url中?开始后的字符串,然后去掉?,并且字符串中的key字符被替换成空,然后比较key1和key2的MD5值和两个变量的值,也就是当他们md5值相同,但本身字符串不同就可以得到flag。key1和key2变量和值都是用户在url中输入的。

    • 首先不能直接写key1,要写成kekeyy1
    • 然后找到合适的字符串,不同但md5值却相同
    • 最终构造出合适的url:http://120.24.86.145:8002/web16/index.php?kekeyy1=QNKCDZO&kekeyy2=240610708

    访问,得到了flag:Bugku{OH_YOU_FIND_MY_MOMY}

    再详细说明下md5值相同,但未计算md5的值不同的绕过。
    1.如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。(也就是我使用的方法)

    下列的字符串的MD5值都是0e开头的:

    QNKCDZO

    240610708

    s878926199a

    s155964671a

    s214587387a

    s214587387a

    2.md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
    所以可以输入:http://120.24.86.145:8002/web16/index.php?kekeyy1[]=something&kekeyy2[]=anything

    雨落亭博客链接

  • 相关阅读:
    洛谷P2402 奶牛隐藏
    BZOJ2150: 部落战争
    HDU 6405 Make ZYB Happy(广义SAM)
    CodeForces
    2019CCPC秦皇岛 E题 Escape(网络流)
    2019CCPC秦皇岛D题 Decimal
    2019CCPC秦皇岛I题 Invoker(DP)
    2019CCPC秦皇岛 F Forest Program
    2019CCPC秦皇岛 J MUV LUV EXTRA(KMP)
    2019CCPC秦皇岛 K MUV LUV UNLIMITED(博弈)
  • 原文地址:https://www.cnblogs.com/yuluoluo/p/9782327.html
Copyright © 2020-2023  润新知