Plit00's Story

[Wargame.kr]-md5_compare write-up 본문

Wargame/Wargame.kr

[Wargame.kr]-md5_compare write-up

plit00 2018. 3. 3. 01:00
JUST COMPARE ONLY.

with the other value :D





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?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>
cs



ctype_alpha의 함수를 찾아보니

v1의 해당하는 문자열이 영문자인지 필터링하는것인데,  v1가 단일 문자이지만 다른 언어가 문자를 갖는 경우 [A-Za-z]   이고,

(ctype_upper($text) || ctype_lower($text)) 는 대문자나 소문자로 발견되지않는다라는 설명으로 알 수 있었습니다.


즉, 모두 영어인지 확인하는 함수이다. 


그렇다면 v1은 영어 , v2는 숫자 이여야합니다.


이문제를 풀때에는 아무정보가 없어서 구글신을 이용해야했는데, 소스가 php 로 작성하였고 문제이름을 이용하여 
php md5 를 검색하였는데 정답을 유추할만한 정보를 얻게되었습니다. 

띠용,,, 스택오버플로우,,? 
var_dump(md5('240610708') == md5('QNKCDZO')); 


다른것에도 얻을 수 있었는데 0e 로 시작을 하게 된다면, float로 파싱되고 지수로 변환시켜주는식으로 풀 수 있었습니다.


이번 문제로 인해 얻은지식이 많았습니다.


'Wargame > Wargame.kr' 카테고리의 다른 글

[Wargame.kr]-md5 password write-up  (0) 2018.02.28
[Wargame.kr]-DB is really good write-up  (0) 2018.02.28
[Wargame.kr]- login filtering write-up  (0) 2018.02.28
Comments