ABOUT ME

Contact.
Email:yj.anthonyjo@gmail.com
Introduce : CS Student.

Today
-
Yesterday
-
Total
-
  • Wargame.kr type_confusion문제
    카테고리 없음 2018. 4. 12. 01:14
    반응형

    이 문제를 보고 나서 전에 무슨문제였더라... 하튼 wargame.kr을 풀면서 ==연산자의 취약점이 있다는것을 직감적으로 느꼇다. 


    그래서 바로 검색했다.

    역시나 바로 나왔다. 여기서 이용하는 규칙은 다음에 참고되있다.

    http://php.net/manual/kr/types.comparisons.php

    여기서는 ""안에 들어가 있는 문자와 0또는 TRUE 와 비교했을떄 결과가 TRUE가 나온


    다는것을 알 수있다. 따라서 우리가 비교하는 것도

    <?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;
     }
    ?>

    소스가 이러하니 0또는 TRUE를 넣어주면 값이 참이 될것이라는것을 알 수 있다. 

    0을 넣었을때도

    true를 넣었을때도 FLAG가 잘 나온다.


    추가적으로 ->연산자는 클래스 안의 것을 표현할때 사용하고 =>는 배열에서의 초기화인것 같다(?)




    반응형

    댓글

Designed by Tistory.