: level 23 → level 24

http://natas24.natas.labs.overthewire.org

natas24 화면이다. password를 입력하는  form이 있다. 소스코드를 확인해보자.

<html>
<head>
<!-- This stuff in the header has nothing to do with the level -->
<link rel="stylesheet" type="text/css" href="http://natas.labs.overthewire.org/css/level.css">
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/jquery-ui.css" />
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/wechall.css" />
<script src="http://natas.labs.overthewire.org/js/jquery-1.9.1.js"></script>
<script src="http://natas.labs.overthewire.org/js/jquery-ui.js"></script>
<script src="http://natas.labs.overthewire.org/js/wechall-data.js"></script><script src="http://natas.labs.overthewire.org/js/wechall.js"></script>
<script>var wechallinfo = { "level": "natas24", "pass": "<censored>" };</script></head>
<body>
<h1>natas24</h1>
<div id="content">

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
?>  
<div id="viewsource"><a href="index-source.html">View sourcecode</a></div>
</div>
</body>
</html>

이번에도 php 소스코드가 매우 짧다.

이번 level은 strcmp함수를 통해 입력값을 password와 비교해 인증하는 방식이다.

이외에 중요해 보이는 코드는 존재하지 않는 것 같았다.

 

다음 level로 넘어가기 위해서는 password를 입력해야 하는데 이 password를 알아내는게 문제이니 조금 당황했다.

아무래도 직접 password를 입력하는 것 외에 다른 방법이 있는 것 같은데 중요해 보이는 코드가 strcmp함수밖에 없으니 해당 함수를 이용하는 방법을 찾아봤다. 

 

php strcmp함수의 취약점을 검색해봤더니 한 가지 새로운 사실을 알 수 있었다.

기본적으로 strcmp함수는 문자열을 비교하는 함수로 비교 문자열이 같으면 0을 반환한다.

그런데 문자열끼리 비교하는게 아니라 배열과 문자열을 비교하게 되면 0을 반환한다는 특징이 있었다.

이 특성을 이용해서 passwd에 배열을 담아 전송하면 문제를 해결할 수 있을 것 같다.

 

 

 

passwd에 데이터를 담아 전송할 때 datatype을 바꿔서 전송했다. (passwd[])

 

 

 

natas25 password: GHF6X7YwACaYYssHVY05cFq83hRktl4c

 

 

 

 

'Study > Web Hacking' 카테고리의 다른 글

[LOS] succubus  (0) 2021.08.09
[LOS] assassin  (0) 2021.08.02
[LOS] giant  (0) 2021.07.26
[natas] Level 22 -> Level 23  (0) 2021.07.26
[LOS] bugbear  (0) 2021.07.20
복사했습니다!