write-ups/Lord of SQL Injection

[Lord of SQL Injection] Darknight 풀이

2016. 11. 8. 02:48


Lord of SQL Injection (LoS) - Darknight 


Analyze

일단 싱글쿼터는 쓰지 못한다. substr() 함수와 ascii() 함수마저... 더군다나 = 도 쓰지 못한다...ㅜㅜ



Solution

 blind SQL Injection을 진행할 때 보통 ascii(substr(pw,1,1)) like 97 이런 식으로 비교했으나 함수를 조금만 바꿔서


ord(mid(pw,1,1)) like 97 이런 식으로 바꾸면 필터링에 걸리지 않는다. 

만약에 like까지 필터링으로 걸렸있었다면, in 으로 비교할 수 있다. 그리고 in 마저 필터링되어있다면, < > <> 등으로 대체하여 비교할 수 있다. 



 ord() 함수와 ascii() 함수는 거의 같은 함수라고 말할 수 있다. 하지만, 이것도 다른 기능이 있긴 있다ㅋㅋ


mysql> select ascii('가');

+--------------+

| ascii('가')  |

+--------------+

|          234 |

+--------------+

1 row in set (0.01 sec)


mysql> select ord('가');

+------------+

| ord('가')  |

+------------+

|   15380608 |

+------------+

1 row in set (0.00 sec)


mysql> select hex('가');

+------------+

| hex('가')  |

+------------+

| EAB080     |

+------------+

1 row in set (0.01 sec)


ascii() 함수는 함수명에서도 알 수 있듯이, ascii만 지원하는 반면에 ord() 함수는 유니코드까지 지원된다. 그래서 나는 ord() 함수를 많이 쓰는 편이다.