역시나 별 어려움 없이 풀 수 없는 문제다.
바로 문제를 보러 가자.
문제 살펴보기

이전 문제들과 다르게
strtolower함수와 str_replace함수가 사용되었다.
$_GET[id] = strtolower($_GET[id]);
$_GET[id] = str_replace("admin","",$_GET[id]);
strtolower 함수는 해당 함수의 인자로 받은 문자열의 알파벳을 소문자로 변환시키는 함수이다.
예를 들어서, strtolower("ADMIN");은 "admin"을 반환한다.
str_replace 함수는 세 번째 인자로 받은 문자열에 첫 번째 인자로 받은 문자열이 포함되어 있을 경우,
해당 문자열을 두 번째 인자로 받은 문자열로 변환시키는 함수이다.
예를 들어서, str_replace("admin", "", "admin1234");는
"admin"을 ""로 변환시켜 "1234"를 반환하게 된다.
$query = "select id from prob_vampire where id='{$_GET[id]}'";
...
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("vampire");
select문이 id 컬럼의 값이 'admin'인 행을 반환하게 될 경우
solve 함수를 호출하여 문제가 풀리게 된다.
문제 풀이 과정
"admin"만 ""으로 바꾸는 것을 이용하여 문제를 풀면 된다.
이러한 문제를 처음 접했다면 어려울 수도 있는데,
그냥 "adadminmin"을 넣어주면 중간에 있는 "admin" 이 ""로 바뀌게 되어
"admin"을 반환하게 된다.
그러면 id 파라미터에 adadminmin을 넣어주면 바로 문제가 풀릴 것이다.

페이로드 : ?id=adadminmin
약간 잔머리(?)를 굴려야하는 문제였다.
이러한 문제를 이미 접해봤다면 고민없이 바로 풀 수 있는 문제
이제 다음 문제로 넘어갑시다.
'web > Lord of SQLInjection' 카테고리의 다른 글
| Lord of SQLInjection - 11번 : golem (0) | 2023.12.10 |
|---|---|
| Lord of SQLInjection - 10번 : skeleton (0) | 2023.12.10 |
| Lord of SQLInjection - 8번 : troll (0) | 2023.12.10 |
| Lord of SQLInjection - 7번 : orge (1) | 2023.12.10 |
| Lord of SQLInjection - 6번 : darkelf (1) | 2023.12.10 |