본문
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배로 늘어났다.-_-;
아마 비교하기위해서 구문을 한번 더 실행하나보다.
'컴퓨터 이야기 > Security' 카테고리의 다른 글
web hacking에 도움이 되는 chrome 확장기능들. (0) | 2014.01.09 |
---|---|
[Tips] IDA에서 dll 분석 시 base address 바꾸는 방법. (0) | 2013.11.28 |
윈도우 쉘코드 작성 시 참고자료. (0) | 2013.09.16 |
[wargame] webhacking.kr clear! (5) | 2013.06.28 |
[Secuinside] toolbox write up (2) | 2013.05.28 |