본문 바로가기
Web/Lord of SQL Injection

Lord of SQL Injection 15단계 (assassin)

by jh117jh 2023. 3. 27.
728x90

이번에 처치할 몬스터는 assassin!

 

이번 코드를 보면 보기엔 너무 간단해 보였다.

딱 보자마자 id를 admin으로 바꿔주면 되는 거 아닌가 했는데 싱글쿼터(')가 필터링되어 있어서 어떻게 해야 되나 한참 고민했다.

지난 문제들처럼 no 인수값을 받는 것도 아니고... 

id를 바꿀 수는 없는 거 같아 admin에 해당하는 pw값을 직접 찾아봐야 될 것 같다.

 

그래서 생각해 본 게 문제에서 괜히 =을 안 쓰고 like를 쓴 이유가 있지 않을까 해서 like에 대해 검색을 해봤다.

 

따란~

 

와일드카드 문자가 있었다 와일드카드는 옛날에 리눅스 터미널 쓸 때 경험해 봤다.

간단하게 설명하면

예를 들어 "s"로 시작하는 모든 이름을 검색하려면 "s%"를 입력하면 되고

이름의 길이와 해당 문자들을 알면 "s_n"와 같이 "_"을 사용하면 된다.

 

이를 이용하여 찾아본 결과

9일 때는 guest가 출력되는 거 보니 guest의 pw는 9로 시작되는 것 같은데 아무리 다른 문자를 입력해도 admin이 출력되지는 않았다...

처음에는 방법이 틀린 줄 알았는데

모든 pw값을 출력해 봤더니 guest가 출력된다는 것은 그냥 guset가 첫 번째 레코드에 있어서 먼저 출력되는 것 같았다.

고로 유추해 볼 수 있는 사실이 guest와 admin은 둘 다 pw가 9로 시작된다.

이 사실을 토대로 대입한 결과 

문제를 풀 수 있었다.

 

guset의 pw도 90으로 시작해 두 번째 자리까지는 guest로 출력되어 시간이 오래 걸렸다.

간단할 줄 알고 손으로 했는데 다음부터는 파이썬코드 짜서 하는 게 건강에 좋을 듯싶다.

 

다음 몬스터 잡으러 가자~!

728x90