본문 바로가기
Web Hacking/LOS (sql injection)

Lord of SQL Injection 15단계, assassin풀이

by 코뮤(commu) 2019. 11. 8.
728x90
반응형

 

이번 포스팅은 15단계, 어쌔신 풀이이다!

드디어 반절정도 온 느낌이다.

사실 los를 풀면서 많이 성장했다고 생각한다.

배운 것도 많고, 얻은 것도 많다. 하루 한 문제씩 풀어가는 재미도 쏠쏠하고.

이걸 토대로 더 많은 것을 할 수 있을 것 같은 느낌이다.

 

 

빨리 코드부터 확인해보자!

 

 

 

이번에도 코드가 짧다.

신기하게 이번에는 =이 아닌 like로 쿼리문이 구성되어 있다.

 

단순하게 생각해보면 id를 admin으로 넣어주면 해결 될 것 같은데, 싱글쿼터가 막혀있으니

아무래도 id가 admin 이라는 값을 가진 얘의 pw값을 직접 알아내야할 것 같다.

 

 

저번 문제에서는 like 를 = 으로 해석하는 정도까지만 알고있어도 문제가 풀렸지만,

이번 문제에서는 like의 와일드카드를 알고있어야 풀린다.

 

여기서, like의 와일드카드에 대해 조금 더 자세하게 알아보자!

 

 

like는 지정된 패턴을 검색하는데 쓰이는 연산자로,

%와 _ 를 사용하여 검색한다.

 

%를 사용하여 검색하려면,

 

값: 1234 

like 1%         -> 첫글자가 1인 어떠한 값 검색!

like %3%       -> 중간 글자가 3인 어떠한 값 검색!

like %4         -> 끝 글자가 4인 어떠한 값 검색!

 

_를 사용하여 검색하려면,

 

값: 1234

like 1___        -> 첫글자가 1이고 네글자인 어떠한 값 검색!

like __3_        -> 세번째 글자가 3이고 네글자인 어떠한 값 검색!

like ___4        -> 끝 글자가 4이고 네글자인 어떠한 값 검색! 

 

 

이렇게 검색 할 수 있다.

간단하게 _는 글자수도 정확해야하고 %는 얼렁뚱땅(?) 대충 값만 맞으면 다 검색~ 하는 느낌이다.

 

_를 이용해서 글자수를 알 수 있다!

 

 

 

자세한 풀이를 원한다면 더보기 클릭!

 

 

더보기

 

?pw=________

언더바 8개만 Hello guest가 뜬다.

12개 까지 시도해보다가 guest라는 얘와 admin이 같은 길이를 가지고 있고,

데이터베이스 내에 guest가 admin보다 위에 있구나! 하고 깨달았다.

그렇다면 첫번째 글자를 알아보자.

 

 ?pw=8%

이것도 0~9까지, a~z까지 다 시도해봤는데 guest가 뜬다.

guest도 admin도 모두 첫 자리가 8인 값을 가지고 있다.

 

두번째 자리를 구해보자.

 

 

?pw=83%

 

두번째 자리마저 똑같다.

세번째 자리는?

 

 

 

?pw=832

 

드디어 guest와 갈라섰다!

심심해서 guest는 세번째 자리가 뭔지 찾아봤다.

 

 

너는 d 였구나!

 

 

아무튼 이렇게 어쌔신 클리어!

 

 

 

728x90
반응형