카테고리 없음

Wargame.kr type_confusion문제

꿈꾸는 사람_Anthony 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가 잘 나온다.


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




반응형