늘모자란, 개발 :: [wargame.kr] Challenge 8 - md5_compare

늘모자란, 개발

JUST COMPARE ONLY.

with the other value :D


소스를 보니 md5의 해쉬 충돌 취약점에 대해 말하고 싶은듯 하다. 그냥느낌이 그렇다


 <?php
    if (isset($_GET['view-source'])) {
         show_source(__FILE__);
         exit();
    }

    if (isset($_GET['v1']) && isset($_GET['v2'])) {
        sleep(3); // anti brute force

        $chk = true;
        $v1 = $_GET['v1'];
        $v2 = $_GET['v2'];

        if (!ctype_alpha($v1)) {$chk = false;}
        if (!is_numeric($v2) ) {$chk = false;}
        if (md5($v1) != md5($v2)) {$chk = false;}

        if ($chk){
            include("../lib.php");
            echo "Congratulations! FLAG is : ".auth_code("md5_compare");
        } else {
            echo "Wrong...";
        }
    }
?>
<br />
<form method="GET">
    VALUE 1 : <input type="text" name="v1" /><br />
    VALUE 2 : <input type="text" name="v2" /><br />
    <input type="submit" value="chk" />
</form>
<br />
<a href="?view-source">view-source</a>



ctype_alpha 는 좀 생소한 PHP function인데, 모두 알파벳인지 확인하는 함수라고 한다.
즉, v1은 전부 알파벳으로만 이루어져야하겠다.
그리고 v2는 전부 숫자여야만 하겠고..

해쉬 충돌은 바이너리 단위로 가야되기때문에 아닌것 같았고 결국 검색어를 다르게 해서,
php md5 vulnerability 로 검색해봤더니... 띠용..

0e 로 시작하게 될경우 hex로 취급되서 지수화 된다고 한다. 정확한 작동원리는 모르겠지만 아니 세상에 뭐 이런게 다 있지 하는 생각이 들었다.

2016/06/08 14:05 2016/06/08 14:05