최상단

컨텐츠

Blind SQL injection시 Request를 최소화 하는 방법.

글 정보

Category
컴퓨터 이야기/Security
2013. 10. 2. 12:24

본문

1. binary search 알고리즘을 사용한다.


2. bit 를 하나씩 가져온다.(ascii 인 경우 7번이면 가능..)


3. sleep를 사용해본다..


1번과 2번은 기존에 나와있던 방법이고, 3번은 조금 전에 생각해본 아이디어인데, request 수가 제한적일 때 사용하면 좋을 것 같다.


대신, sleep를 쓰기 때문에 네트웍의 상황에 따라 오차가 생길 수 있고, 시간이 좀 오래걸릴 수 있는 단점이 있다.


그래도 한글자를 한번에 가져올 수 있으니..이정도면 쓸모있지 않을까?..


서버 상태만 좋다면, 나누기 연산을 통해 ms 단위로도 구분할 수도 있다..;;;;;;



sql 구문은


SELECT * FROM table where idx=1 and sleep((ascii(substr(column, 1, 1)-32)/2)


로 구문을 만들어서 응답이 오는 시간을 확인해보면, ascii 값을 확인해 볼 수 있다.


32는 ascii 코드에서 읽기 가능한(?) 부분의 시작..(0x20, space) 이다.


/2 는 시간을 500ms 단위로 보겠다는 이야기..;



원래 존재하는 방법인가?ㅎㅎ 모르겠다...-_-;




주의. sleep()의 return값이 정상적인 경우 0 이길래, = 0 의 비교구문을 넣었더니, sleep 되는 시간이 2배로 늘어났다.-_-;


아마 비교하기위해서 구문을 한번 더 실행하나보다.

트랙백과 댓글 여닫기

TOP