[20번 문제 - dragon]
1
2
3
4
5
6
7
8
9
10
11
12
|
<?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__);
?>
|
cs |
해당 문제에서 ID 파라미터 뒤에 있는 #으로 뒷 부분이 주석처리가 된다는 것이다.
# 뒤에 오는 값들은 모두 주석처리가 되는데 한 줄만 주석처리가 되는것을 이용하면 문제를 풀 수 있다.
즉, 입력값 처음에 개행을 주고 ID가 'admin'인 계정으로 참인 조건문을 만들기만 하면 된다.
간단하게 적으면 id='guest'# and pw='입력값' 에서 입력값에 개행을 주게 되면
id='guest' # and pw='개행
입력값'
id='guest' 구문만 남아있게 되고 입력값 부분에 참인 조건을 적어주면 된다.
URL에서 개행은 %0a%0d 로 되고, 나머지 입력값에 and pw='' or id='admin 해당 구문을 넣어서 or 앞의 구문을 거짓으로 만들고 or 뒤의 구문을 ID가 'admin' 인 참인 조건을 넣어서 결과적으로 참인 조건이 성립되면서 문제가 풀리게 된다.
[문제 풀이 구문]
https://los.rubiya.kr/chall/dragon_51996aa769df79afbf79eb4d66dbcef6.php?pw=%0a%0d%20and%20pw=%27%27%20or%20id=%27admin
'워게임' 카테고리의 다른 글
Lord of SQL Injection - 22번 문제풀이 (0) | 2023.05.15 |
---|---|
Lord of SQL Injection - 21번 문제풀이 (0) | 2023.05.15 |
Lord of SQL Injection - 19번 문제풀이 (0) | 2023.02.04 |
Lord of SQL Injection - 17번 문제풀이 (0) | 2023.01.31 |
Lord of SQL Injection - 16번 문제풀이 (0) | 2023.01.30 |