반응형

처음 접속시 화면이다.

제출해보면, your not admin이라고 나온다.

우선적으로 sql injection을 시도하려했는데, 입력받는 공간이 정확히 5이다.

injection을 위하여 length를 50으로 늘려주고, 기본 쿼리를 넣어보았다.

 

ez~

또 다른 풀이는 제출시, url 에 박히는 것을 활용하면된다.

https://webhacking.kr/challenge/js-6/?id=admin

 

admin자리에 admin'--를 넣어주어도 풀린다.

 

반응형

'webhacking.kr' 카테고리의 다른 글

webhacking.kr [old-38]  (0) 2023.07.16
webhacking.kr [old-36]  (0) 2023.07.15
webhacking.kr [old-27]  (0) 2023.07.15
webhacking.kr [old-25]  (0) 2023.07.15
webhacking.kr [old-27]  (0) 2023.07.15

반응형

sql injection문제이다.

주요 코드는 아래와 같다.

<?php
  if($_GET['no']){
  $db = dbconnect();
  if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");
  $r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error");
  if($r['id']=="guest") echo("guest");
  if($r['id']=="admin") solve(27); // admin's no = 2
}
?>

필터링 룰은 #, select, (, 공백, limit, =, 0x , 대소문자 구별X 이다.

 

목적은 no = 2 를 만드는 것이다.

확인해보니 guest는 no = 1이다. 

그렇기에 넣어야하는 쿼리문은 0) no = 2--이다.

 

공백 우회는 /**/ 를 활용하고, =은 like를 활용하여 우회하면 된다.

 

최종 쿼리문은 0)/**/or/**/no/**/like/**/2-- 이 된다.

 

하지만 전혀 풀리지 않는다...

 

분명 맞는 쿼리인데 계속 안되어서 고민하다가 이전에 선배님께서 얘기해주신 바로 쿼리문이 안먹힐때는 뒤에 공백을 넣어보라하셨었다.

 

그러나 공백이 필터링되고 있으므로 %09를 맨뒤에 넣어주었다.

최종 쿼리문: 0)/**/or/**/no/**/like/**/2--%09

%09는 더블 인코딩 때문에 url에 바로 넣었다.

바로 풀리네 ㅋㅋ

===============================================

뒤에 공백을 넣었을 때 풀리는 이유에 대해 찾아보니 

-- 주석뒤에는 반드시 공백이 와야한다고 한다. 심지어 %20 같은게 아니라 %09가 와야한다고 한다.

꼭 기억해놔야할 것 같다.

===============================================

반응형

'webhacking.kr' 카테고리의 다른 글

webhacking.kr [old-27]  (0) 2023.07.15
webhacking.kr [old-25]  (0) 2023.07.15
webhacking.kr [old-24]  (0) 2023.07.13
webhacking.kr [old-05]  (0) 2023.07.13
webhacking.kr [old-54]  (0) 2023.07.13
반응형

이 문제도 처음보는 유형이라 좀 고민을 많이 했었다.

 

첫화면이다. 

 

client ip와 agent 가 보인다.

 

주요 코드 부분은 아래와 같다.

<?php
  extract($_SERVER);
  extract($_COOKIE);
  $ip = $REMOTE_ADDR;
  $agent = $HTTP_USER_AGENT;
  if($REMOTE_ADDR){
    $ip = htmlspecialchars($REMOTE_ADDR);
    $ip = str_replace("..",".",$ip);
    $ip = str_replace("12","",$ip);
    $ip = str_replace("7.","",$ip);
    $ip = str_replace("0.","",$ip);
  }
  if($HTTP_USER_AGENT){
    $agent=htmlspecialchars($HTTP_USER_AGENT);
  }
  echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
  if($ip=="127.0.0.1"){
    solve(24);
    exit();
  }
  else{
    echo "<hr><center>Wrong IP!</center>";
  }

 

ip가 127.0.0.1 이 문제가 풀리는 조건이다.

$_COOKIE에서 $REMOTE_ADDR값을 가져오는 것같다.

 

그러므로 하지만 사이트 초기에는 REMOTE_ADDR값을 가져올 cookie가 없으므로 cookie를 생성해야한다.

 

이때 filtering rule을 우회해야한다.

 

localhost 로 시도해보았지만 localhost로 안풀리기에 이전에 XSS풀 때, 활용했던 bypass기법을 활용하기로 하였다.

일부러 필터링으로 공백처리되는 것을 이용하여 문자열을 중복되게 만드는 것이다.

 

그럼 결국 112277.00.00.1이 우회가능한 ip가 된다.

 

로그인해달라고 떠서 다시 로그인한 이후에 문제에 들어가니 풀렸다.

 

 

===============================================

아마 localhost가 안되었던 이유에 대해서는 아래의 사이트를 참고하여 본 이유 때문이지 않을까 추측해본다.

 

https://www.baeldung.com/cs/127-0-0-1-vs-localhost

===============================================

반응형

'webhacking.kr' 카테고리의 다른 글

webhacking.kr [old-25]  (0) 2023.07.15
webhacking.kr [old-27]  (0) 2023.07.15
webhacking.kr [old-05]  (0) 2023.07.13
webhacking.kr [old-54]  (0) 2023.07.13
webhacking.kr [old-10]  (0) 2023.07.13
반응형

간단한 문제였는데 좀 많이 헤맸다...

자꾸 들어가면 아래와 같이 나오면서 webhacking.kr기본 사이트로 계속 이동한다.

 

이동

 

해당 사이트를 아무리 뒤져봐도 아무것도 안나온다....진짜 안나온다..

계속 무한반복하다가 혹시나 해서  burp suite로 어떻게 넘어가나 보기로했다.

 

 repeater로 확인해보니 아래와 같았다.

알림을 표시하고, 페이지를 /로 이동한다.

그리고 이후에 <a>태그를 활용하여 [Get Flag] 링크를 생성한다. 

 

그러므로 직접 https://webhacking.kr/challenge/js-2/?getFlag 링크로 이동하면 문제가 풀린다.

 

 

풀렸다..

반응형

'webhacking.kr' 카테고리의 다른 글

webhacking.kr [old-27]  (0) 2023.07.15
webhacking.kr [old-24]  (0) 2023.07.13
webhacking.kr [old-54]  (0) 2023.07.13
webhacking.kr [old-10]  (0) 2023.07.13
webhacking.kr [old-03]  (0) 2023.07.13

+ Recent posts