WARGAME/web

[dreamhack] [wargame.kr] strcmp

lucykorea414 2023. 6. 2. 16:27
728x90

웹해킹을 재작년에 잠깐 공부하고 한동안 손 안대다가 그냥 레벨1이니깐 쉽게 풀리지 않을까? 해서 한번 풀어봤다

 

제목부터 strcmp의 취약점을 이용하여 플래그를 찾는것 같다. 

 

우선 웹페이지를 한번 볼게용

password를 입력 받고 있네요

chk를 눌러서 올바른 password 인지를 확인하는 것 같습니다

이때 source에서

$password = sha1(md5(rand().rand().rand()).rand());

    if (isset($_GET['view-source'])) {
        show_source(__FILE__);
        exit();
    }else if(isset($_POST['password'])){
        sleep(1); // do not brute force!
        if (strcmp($_POST['password'], $password) == 0) {
            echo "Congratulations! Flag is <b>" . $FLAG ."</b>";
            exit();
        } else {
            echo "Wrong password..";
        }
    }

이렇게 나와있는데 이때 password의 암호화된 값을 정확히 아는 것은 불가능하므로 strcmp의 취약점을 이용해서 플래그를 찾도록 합시다

 

if 문에 보면 strcmp로 패스워드의 값을 비교하여 같다면 결과로 0을 리턴하여 Flag가 출력되는 모습이 보인다

여기서 strcmp에는 문자열을 넣어도 되지만 배열을 넣어도 된다! 이때 배열을 넣어서 문자열과 넣게 되면 NULL을 리턴하게 되는데, NULL == 0 을 해보면 TRUE가 반환된다고 한다. (이는 ===를 이용하여 FALSE 값을 가지게 해야한다.)

 

따라서 버프스위트로 중간에 password를 배열로 바꿔서 보내주면 어떤 패스워드 값을 넣어도 플래그값을 얻을 수 있다!

 

실제로 해보면 다음과 같다

 

원래 password 로 되어 있던것을 배열로 password[]로 바꾼다!

이를 보내보면

 

다음과 같이 플래그 값이 나온다!!

 

:)

728x90

'WARGAME > web' 카테고리의 다른 글

[드림핵] BISC Safe  (0) 2024.05.08
[portswigger lab] Exploiting XXE using external entities to retrieve files  (0) 2024.04.03
[dreamhack] command-injection-chatgpt  (0) 2024.04.03
[dreamhack] phpreg  (0) 2023.06.28