김승현
[Lord Of SQLInjection] darkknight 12번 문제 write up 본문
문제는 이렇게 생겼고 코드를 분석해보자.
include "./config.php";
login_chk();
$db = dbconnect();
if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~");
if(preg_match('/\'/i', $_GET[pw])) exit("HeHe");
if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe");
첫 번째 줄은 ./config.php를 포함한다는 내용입니다.
두 번째 줄은 로그인을 했는지 체크하는 내용입니다.
세 번째 줄은 db를 연결합니다.
if문들은 필터링 관련 내용입니다. (preg_match란 정규 표현식에 해당 내용이 발견되면 검색을 중단하는 함수입니다.)
필터링 내용 no hack 1. prob 2. _ 3. . 4. ( 5. ) hehe 1. ' 2. substr 3. ascii 4. = 위의 내용들을 대소문자 구분 없이 필터링합니다. |
$query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}";
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>";
$query에 select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}를 저장합니다.
query : $query를 강조해서 출력합니다.
$result에 $db를 연결하고 $query를 저장합니다.
만약 id가 존재하면 Hello [id내용]을 출력합니다.
$_GET[pw] = addslashes($_GET[pw]);
$query = "select pw from prob_darkknight where id='admin' and pw='{$_GET[pw]}'";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("darkknight");
pw를 get 해와서 역슬래시(\)를 붙이고 저장합니다.
$query에 select pw from prob_darkknight where id='admin' and pw='{$_GET[pw]}'를 저장합니다.
$result에 $db의 내용을 연결하고 $query를 저장합니다.
만약 pw가 존재하고 pw가 db에 저장된 pw값과 같으면 darkknight가 solve됩니다.
제일 먼저 sqli가 제대로 되는지 확인해보자.
1 || id like "admin" %23
위와 같이 입력해줬다.
그럼 이렇게 제대로 sqli가 되는 걸 알 수 있다.
그 다음으로는 pw의 길이를 알아보자.
?no = 1 || length(pw) like "8" %23
이렇게 입력해봤다.
이를 통해 admin의 pw의 길이는 8임을 알 수 있다.
이제 blind sqli를 시도해보자.
이번에 ascii가 필터링 되어서 새로운 걸 써야 하는데 ord와 mid라는 게 있다.
ascii(substr(pw,1,1))대신 ord(mid(pw,1,1))를 써볼 것이다.
1 || id like "admin" %26%26 ord(mid(pw,1,1)) < 50 %23
이렇게 입력해줬고
이렇게 admin이 뜨는 걸 알 수 있다. 이걸 하나하나 찾다보면 pw가 0b70ea1f임을 알 수 있다.
?pw=0b70ea1f
'Web > Lord Of Sql' 카테고리의 다른 글
[Lord Of SQLInjection] golem 11번 문제 write up (0) | 2023.03.22 |
---|---|
[Lord Of SQLInjection] skeleton 10번 문제 write up (0) | 2023.03.18 |
[Lord Of SQLInjection] vampire 9번 문제 write up (0) | 2023.03.18 |
[Lord Of SQLInjection] troll 8번 문제 write up (0) | 2023.03.14 |
[Lord Of SQLInjection] orge 7번 문제 write up (0) | 2023.03.14 |