Over the Wire/natas

[OverTheWire:Natas] natas 23 → 24 / natas24

ruming 2021. 8. 3. 19:17

이전 문제처럼 password를 적는 칸만 있다.

 

소스코드

Password:
<form name="input" method="get">
    <input type="text" name="passwd" size=20>
    <input type="submit" value="Login">
</form>

<?php
    if(array_key_exists("passwd",$_REQUEST)){
        if(!strcmp($_REQUEST["passwd"],"<censored>")){
            echo "<br>The credentials for the next level are:<br>";
            echo "<pre>Username: natas25 Password: <censored></pre>";
        }
        else{
            echo "<br>Wrong!<br>";
        }
    }
    // morla / 10111
?>

strcmp함수에서 $_REQUEST["passwd"]와 비밀번호를 비교하고 있다.

 

strcmp 함수가 이번 문제의 핵심인 것 같아 취약점을 검색해보았다.

https://ch4njun.tistory.com/65

php 특정 버전에서는 문자열이 아니라 배열을 입력해도 null을 반환한다는 것이다.

passwd[]=... 같은 방식으로 전달해주면 될 것 같다.

 

<censored>를 뒤에 입력해주었다. 문제를 해결할 수 있었다!

?passwd[]=<censored>

GHF6X7YwACaYYssHVY05cFq83hRktl4c