Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sql injection
- 과제
- union sql injection
- 문제 풀이
- Error based sql injection
- csrf
- 보안 패치
- XSS
- Los
- Python
- CTF
- 세션
- 보고서
- 로그인페이지
- file upload
- 증적 사진
- php
- MySQL
- blind sql injection
- 게시판 만들기
- lord of sql injection
- sql injection point
- 웹개발
- JS
- css
- 로그인
- 웹 개발
- 모의해킹
- 웹 해킹
- cookie 탈취
Archives
- Today
- Total
Almon Dev
[Lord of SQL Injection] dragon 문제 풀이 본문
dragon 문제 풀이
dragon 문제
문제 분석
문제 목표
쿼리 결과의 id가 admin인 경우 solve("dargon") 함수가 실행됩니다. 이 함수는 문제를 성공적으로 해결했을 때 호출되는 것으로 보이므로, 이 문제는 pw 파라미터에 적절한 값을 삽입하여 쿼리 결과의 id가 admin이 되도록 마드는 것이 목표입니다.
$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");
입력 제한
dargon 문제에서는 pw 파라미터에 대한 별다른 필터링은 존재하지 않지만, 해당 파라미터의 값이 # 뒤에 삽입되어 주석 처리됩니다.
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'";
취약점 분석
pw 파라미터의 값은 주석으로 삽입되지만, #은 한 줄 주석을 의미하기 때문에 개행 문자(\n)를 삽입하면 SQL 쿼리의 구조를 변경할 수 있습니다.
\n => 개행문자를 의미합니다.
ex)
"1\n2" => "1
2"
문제 풀이
1. 개행문자와 함께 1=2 거짓 쿼리를 삽입하여 SQL 쿼리의 구조가 변경된 것을 확인합니다.
=> %0A는 개행문자인 \n을 URL 인코딩 한 값입니다.
2. 참 쿼리를 삽입하여 거짓 쿼리와 결과가 다른 것을 확인합니다.
3. UNION SELECT 문을 삽입하여 쿼리의 결과가 admin이 되도록 합니다.
본래는 참과 거짓의 결과가 다른 점을 이용해 Blind SQL Injection을 하고자 하였으나, 쿼리의 결과가 admin이기만 하면 된다는 생각에 더 쉬운 방식인 UNION SQL Injection을 이용했습니다.
'웹 해킹 > Lord of SQLi' 카테고리의 다른 글
[Lord of SQL Injection] dark_eyes 문제 풀이 (0) | 2025.05.16 |
---|---|
[Lord of SQL Injection] irongolem 문제 풀이 (0) | 2025.05.13 |
[Lord of SQL Injection] xavis 문제 풀이 (0) | 2025.05.08 |
[Lord of SQL Injection] nightmare 문제 풀이 (0) | 2025.05.03 |
[Lord of SQL Injection] zombie_assassin 문제 풀이 (0) | 2025.05.01 |