: level 13 → level 14

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

natas14에서는 Username과 Password를 받고 있다. 소스코드를 확인해보자.

<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": "natas14", "pass": "<censored>" };</script></head>
<body>
<h1>natas14</h1>
<div id="content">
<?
if(array_key_exists("username", $_REQUEST)) {
    $link = mysql_connect('localhost', 'natas14', '<censored>');
    mysql_select_db('natas14', $link);
    
    $query = "SELECT * from users where username=\"".$_REQUEST["username"]."\" and password=\"".$_REQUEST["password"]."\"";
    if(array_key_exists("debug", $_GET)) {
        echo "Executing query: $query<br>";
    }

    if(mysql_num_rows(mysql_query($query, $link)) > 0) {
            echo "Successful login! The password for natas15 is <censored><br>";
    } else {
            echo "Access denied!<br>";
    }
    mysql_close($link);
} else {
?>

<form action="index.php" method="POST">
Username: <input name="username"><br>
Password: <input name="password"><br>
<input type="submit" value="Login" />
</form>
<? } ?>
<div id="viewsource"><a href="index-source.html">View sourcecode</a></div>
</div>
</body>
</html>

전체적으로 매우 익숙한 쿼리가 보인다. 이 문제는 SQL injection으로 해결할 수 있을 것 같다.

코드를 전체적으로 보면 $query를 DB에 전달했을 때 가져오는 값이 하나라도 존재하면 로그인되는 것을 알 수 있다.

$query에서 where절을 참으로 만드면 natas14를 해결할 수 있을 것이다.

위 쿼리문을 참으로 만드는 것은 SQL injection에서 제일 기본적인 문제로 " or 1=1#을 많이 쓴다.

 

Username에 " or 1=1#를 입력해봤다.

 

그 결과 natas15의 password가 나왔다.

natas15 password: AwWj0w5cvxrZiONgZ9J5stNVkmxdk39J

 

 

 

 

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

[LOS] orge  (0) 2021.05.30
[natas] Level 14 -> Level 15  (0) 2021.05.30
[XSS Challenge] Stage #12  (0) 2021.05.23
[LOS] darkelf  (0) 2021.05.23
[natas] Level 12 -> Level 13  (0) 2021.05.23
복사했습니다!