: 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 |