mysql false based sql injection
MySQL은 PHP만큼 자유도가 정말 높은 프로그래밍 도구이다. 그래서 PHP와 마찬가지로 `타입 저글링`이 가능하다. 이 때 취약점도 같이 생기게 된다. 그 취약점이 바로 `False Based SQL Injection`이라는 것이다. 일단 예제로 MySQL의 타입 저글링을 이해해보자.
mysql> select 'some text'=0;
+---------------+
| 'some text'=0 |
+---------------+
| 1 |
+---------------+
1 row in set, 1 warning (0.00 sec)
mysql> select '1st prize'=1;
+---------------+
| '1st prize'=1 |
+---------------+
| 1 |
+---------------+
1 row in set, 1 warning (0.00 sec)
mysql> select '1024 is 2^10'=1024;
+---------------------+
| '1024 is 2^10'=1024 |
+---------------------+
| 1 |
+---------------------+
1 row in set, 1 warning (0.00 sec)
이 세 개의 쿼리에서 봤듯이, 원래는 0 (False)가 떠야하는 쿼리들이 1 (True)이 뜬다는 것이다. String 과 Int 형을 비교할 때는 String 형의 앞에 있는 숫자가 비교 된다. 그래서 저 쿼리들의 결과가 모두 1 (True)인 것이다.
그럼 만약에 앞에 숫자가 없는 스트링들이 저장되어 있는 테이블에서 쿼리를 날릴 때 ` ' or 1=1-- - ` 말고도 ` '+0 `, ` '^1 ` 과 같은 쿼리로도 같은 결과를 할 수 있다는 것이다.
MySQL의 이러한 원리를 사용하는 것 문제도 소개해주겠다. ch4n3 world 에 이 기법과 관련된 문제가 있다. 찾아서 풀어보라.
'Hacking > Web.' 카테고리의 다른 글
SQL Injection Tricks (0) | 2017.11.04 |
---|---|
webhacking.kr 41번 write up (0) | 2017.11.03 |
LFI exploit with php wrappers (0) | 2017.10.18 |
Markdown에서 XSS (0) | 2017.10.18 |
웃긴대학 XSS 취약점 제보 (0) | 2017.10.16 |