본문 바로가기
CTF, 워게임 문제 풀이/webhacking.kr

webhacking.kr 45번 문제

by secumark 2022. 12. 13.
728x90

 

sql injection 문제다.

 

 

id, pw에 guest라고 적혀 있어서 그대로 제출 버튼을 눌렀는데, hi guest라고 뜬다.

소스코드를 보자.

 

 

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

 

<?php로 시작하는 부분을 보자.

데이터베이스로 연결되는 것을 일단 확인할 수 있다.

 if($result['id'] == "admin"solve(45); 그리고 이 부분을 잘 보면 id가 admin일때 문제가 풀리는거 같다.

하지만 admin, select, limit, pw, =, <, >, i를 사용하면 exit()를 하고 있다.

 

"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"

이 부분을 조작하면 된다. 

참고로 addslashes는 ', ", \, null이 오면 백슬래시를 추가해준다.

그래서 sql 조작이 더 힘들어짐.

mb_convert_encoding는 처음보는거라 검색해봤는데 이 encoding에 취약점이 하나 존재한다고..! 바로 magic_quotes_gpc가 설정되어 있을 때 %a1 ~ %fe까지 아무거나 \앞에 붙으면 이걸 하나의 문자로 인식해버려서 우회가 가능하다고 한다.

예를 들어 id=%aa%27이면 %27이라고 인식함.

내가 원하는 답은 ' or id='admin'# 이다.

근데 지금 =도 우회해야 해서 이건 like로 적어주고..

%aa%27 or id like admin# 

이런식으로 하면 되는데 admin도 우회해야하니까 .. 아스키코드로 바꿔보면

%61%64%6d%69%6e

%23은 #

%aa%27 or id like 0x61646d696e%23&pw=guest

 

 

 

 

mb_convert_encoding, 그리고 magic_quotes_gpc를 까먹지 말자.. 어려버라...

 

728x90

'CTF, 워게임 문제 풀이 > webhacking.kr' 카테고리의 다른 글

webhacking.kr 47번 문제 풀이  (0) 2022.12.16
webhacking.kr 46번 문제  (0) 2022.12.14
webhacking.kr 44번 문제  (0) 2022.12.10
webhacking.kr 43번 문제  (0) 2022.12.10
webhacking.kr 42번 문제  (0) 2022.11.26

댓글