query : {$query}

"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "

Hello {$result[id]}

"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>"> query : {$query}

"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "

Hello {$result[id]}

"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>"> query : {$query}

"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "

Hello {$result[id]}

"; if($result['id'] == 'admin') solve("goblin"); highlight_file(__FILE__); ?>">
<?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");
  highlight_file(__FILE__); 
?>

우선 여기서 id값은 guest로 고정되어 있습니다.

우리가 줄 수 있는 값은 no parameter 값 뿐입니다.

우선 no 값을 1로 줘보겠습니다.

Screenshot 2024-06-03 at 1.06.21 AM.png

guest의 no 값은 1로 정해져있습니다.

다른 값(2, 3 …) 을 넣어봤을 땐 Hello guest가 뜨지 않습니다.

id='guest' and no={$_GET[no]} 해당 and문을 false로 무력화를 시킬 수 있습니다.

그럼, no 값으로 2 or id='admin' 과 같이 주면 될것같은데, 문제에서 따옴표를 필터링합니다.

따옴표 대신 hex값으로 0x61646d696e ****를 사용할 수 있습니다.

Screenshot 2024-06-03 at 1.09.56 AM.png