본문 바로가기

web/Lord of SQLInjection

Lord of SQLInjection - 9번 : vampire

역시나 별 어려움 없이 풀 수 없는 문제다.

바로 문제를 보러 가자.

문제 살펴보기

los vampire 문제

 

이전 문제들과 다르게

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

페이로드 : ?id=adadminmin

 

 

 

 

 

약간 잔머리(?)를 굴려야하는 문제였다.

이러한 문제를 이미 접해봤다면 고민없이 바로 풀 수 있는 문제

이제 다음 문제로 넘어갑시다.