ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Wargame.kr type confusion
    WebHacking/Wargame.kr 2018. 2. 25. 06:40
    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
    35
    36
    37
    38
    <?php
     if (isset($_GET['view-source'])) {
         show_source(__FILE__);
        exit();
     }
     if (isset($_POST['json'])) {
         usleep(500000);
         require("../lib.php"); // include for auth_code function.
        $json = json_decode($_POST['json']);
        $key = gen_key();
        if ($json->key == $key) {
            $ret = ["code" => true"flag" => auth_code("type confusion")];
        } else {
            $ret = ["code" => false];
        }
        die(json_encode($ret));
     }
     
     function gen_key(){
         $key = uniqid("welcome to wargame.kr!_"true);
        $key = sha1($key);
         return $key;
     }
    ?>
     
    <html>
        <head>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
            <script src="./util.js"></script>
        </head>
        <body>
            <form onsubmit="return submit_check(this);">
                <input type="text" name="key" />
                <input type="submit" value="check" />
            </form>
            <a href="./?view-source">view-source</a>
        </body>
    </html>
    cs


    이번 문제는 JSON문제다 

    {'key':'0'}을 넣게 되면 JSON decode를 해주면 key='0'이 된다.

    우리가 비교하게 되는 $key는 문자열이다.

    우리가 넣는 JSON은 문자열을 넣어도 되고 숫자를 넣어도 된다.

    그리고 비교는 ==를 쓴다.


    느낌이 온다 .. "0SECRET_FLAG" == 0을 비교하면 문자열 맨 앞에 있는 숫자와 비교를 하기 때문에 True가 될 것 이다.

    {"key":0}을 넣으면 이상하게 안 된다.. 내가 쓰는 웹 서버에서는 잘 되던데 ..

    그래서 조금 야매?를 써서 풀기로 하였다.


    우리는 JSON값을 보내면 submit_check함수가 호출된다.



    이곳에서 JSON디코드 된 값을 submit(값)을 넣어서 호출하는데 

    submit(0)을 넣어주면 내가 넣을려 했던 숫자 0이 제대로 들어갈 것 이다.

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

    Wargame.kr SimpleBoard  (0) 2018.02.26
    Wargame.kr tmitter  (0) 2018.02.25
    Wargame.kr strcmp  (0) 2018.02.25
    Wargame.kr md5 password  (0) 2018.02.25
    Wargame.kr md5 compare  (0) 2018.02.25
Designed by Tistory.