본문 바로가기
Web/Hacking

Blind SQL Injection

by 09337 2020. 12. 30.

Blind SQL Injection을 정리하기 이전에, 알고가면 좋은 개념과 함수에 대해 먼저 정리한다.

 

이 공격기법은 일반적으로 ' or 1=1-- 와 같은 공격패턴을 사용하는 인증우회(Auth Bypass)기법의 상위 단계라고 할 수 있다.

 

1) substr

substr 함수는 문자열과 자를 범위를 파라미터로 받아서 해당 부분의 문자열을 리턴해준다.

예를 들어, USERS 테이블에 id와 pw컬럼이 존재하고 id는 jungwoo, pw는 nct127 인 행이 존재할 때

substr((SELECT pw FROM USERS WHERE id='jungwoo'),2,2) 쿼리문을 DB에 보내게 되면

id가 jungwoo인 유저의 pw 컬럼을 조회하라는 명령으로 nct127이 뽑히게 된다.

그 후 ‘nct127’ 문자열에서 2번째 문자 c부터 2개의 문자를 추출하여 ct가 반환된다.

 

2) ascii

ascii 함수는 파라미터로 받은 값의 아스키코드 값을 리턴해준다.

ascii() 예시


Blind 인젝션은 평범한 SQL 인젝션과 같이 원하는 데이터를 가져올 쿼리를 삽입하는 기술이다.

 

쿼리가 참일 때와 거짓일 때 서버의 반응으로 데이터를 얻기 때문에, 쿼리를 삽입했을 때 참과 거짓에 대한 반응이 구분 될 때에 사용한다.

 

substr과 ascii 함수를 이용해서 쿼리의 결과를 얻고, 한 글자씩 끊어온 값을 아스키코드로 변환시키고, 임의의 숫자와 비교해서 참과 거짓을 비교하는 과정을 거쳐가면서 반복적으로 질의를 보내서 일치하는 아스키코드를 찾아낸다.

이 과정들로 결과를 조합하여 원하는 정보를 얻어낼 수 있다.

 

Blind SQL Injection 활용 예시는 여기서 확인할 수 있다.

 

Los - orc

pw가 참이어도, id가 admin인 계정과 비교하여 일치할 때 Flag가 나오기 때문에 정확한 pw를 알아야 한다. pw길이 구하기 이 문제는 db에 존재하는 admin 계정의 pw와 우리가 입력할 pw가 일치해야 풀리도

lyk00331.tistory.com

 

'Web > Hacking' 카테고리의 다른 글

불충분한 인가 (IN)  (1) 2022.12.11
파일 업로드 취약점 | 악성코드 배포 | 보안 방법  (0) 2021.08.09
CSRF | XSS와 CSRF 차이점 | 보안 방법  (0) 2021.08.09
XSS | 필터링 우회 | 보안 방법  (0) 2021.08.09
SQL Injection  (2) 2020.07.14

댓글