write-ups/Lord of SQL Injection

[Lord of SQL Injection] cobolt 풀이

2016. 11. 7. 22:43

Lord of SQL Injection(LoS) - Cobolt 



Comment based SQL Injection.

 SQL Injection 취약점이 해당 웹 어플리케이션에 존재할 때, 쿼리를 가장 쉽게 정복할 수 있는 방법 중 하나는 바로 주석을 이용하는 것입니다. 

 MySQL에서 많은 종류의 주석이 쓰이는데, 공격에 많이 쓰이는 주석을 소개하겠습니다. 


1. --

2. # (%23) => 참고로 #은 MySQL에서만 주석으로 사용됩니다.

3. /*

4. //

5. (주석은 아니지만 쿼리를 바로 끝낼 수 있는 것) ;%00


이 정도가 있겠네요. 


 저는 " -- - "를 주로 씁니다. 제가 LoS를 풀 당시에는 # 을 많이 썼지만 MSSQL, ORACLE DB, SQLite3 등에는 #이 주석으로 사용되지 않기 때문에 -- -을 사용합니다.

 

 -- 뒤에 "%20-"를 붙이는 이유는 -- 만 사용할 경우 주석으로 인식되지 않는 경우가 있기 때문입니다. 


Solution 



Gremlin 단계에서 했던 것에서 주석을 추가하여 exploit하면 됩니다. 

그리고 id가 admin이라면 cobolt 단계를 푸는 것이므로 id에 admin 값이 들어가야 합니다. 

 주석말고도 풀 수 있는 방법은 많습니다. pw의 값에 무차별 대입 공격으로 푸셔도 됩니다. 하지만, 시간도 그렇고 네트워크 자원이 많이 소비되겠죵~~


 하지만, 이런 쿼리를 만든다면 뒤의 조건은 아예 무시하고 앞에 id가 admin이냐만 보게 되는 것이죠.