Yozzang의 해킹일기 💻
article thumbnail
Published 2023. 3. 16. 01:05
DVWA (Blind SQL Injection) Wargame/DVWA
728x90

이번 포스트에서는 DVWA의 Blind SQL Injection 문제를 실습해보겠다.


## 공격 정의

  • 질의 결과를 이용자가 화면에서 직접 확인하지 못할 때 참 / 거짓 반환 결과로 데이터를 획득하는 SQL Injection 공격 기법
  • 일반적인 SQL Injection 공격보다 더욱 어려운 공격. 이는, SQL Injection Blind 공격에서는 결과값이 출력되지 않으므로, 공격자가 정보를 수집하기 위해 사용할 수 있는 수단이 제한적이기 때문
  • SQL Injection Blind 공격은 대상 시스템에서 취약점을 확인할 수 있는 데 있어서 매우 효과적인 공격 방법 중 하나

## 공격 다이어그램

  1. 공격자는 대상 시스템에서 취약점을 찾기 위해, SQL Injection 공격을 수행
  2. 대상 시스템에서 SQL 쿼리의 결과를 출력하지 않는 경우, 공격자는 출력되지 않는 결과값에 대해 정보를 수집
  3. 공격자는 결과값에 대한 정보를 수집하기 위해, 다양한 방법을 시도. 예를 들어, 시간 지연 기반(Time-based Blind) 공격을 수행하거나, Boolean 기반 공격을 수행
  4. 공격자는 SQL Injection Blind 공격을 성공적으로 수행함으로써, 취약점의 존재 여부를 확인할 수 있음

## 실습

DVWA의 Blind SQL Injection 항목을 선택하면 아래와 같은 이미지가 보인다.

DVWA

우선 아무값이나 입력하여 출력되는 과정과 값을 확인해보겠다.

출력값 확인

id 파라미터에 1이라는 값을 넣고 실행해보니 위와 같이 "User ID exists in the database"라는 문구가 출력된다. 즉, 실제 id에 대한 정보가 아닌 id가 존재하는 지 여부에 대해서만 출력된다는 것이다.

 

이어서 Blind SQL Injection 기법을 이용하여 DB의 이름에 대해서 출력해보겠다. 그전에 우선 DB이름의 길이를 알아내야 한다.

DB 길이 추출 - 실패

위와 같이 Blind SQL Injection을 수행한 결과, DB 이름의 길이가 3이 아닌 것을 알 수 있다. 실제 테스트해본 결과, DB의 길이가 4이므로 4을 넣고 다시 실행해보겠다.

DB 길이 추출 - 성공

반환값에 200 OK라는 문구가 뜬 것을 확인할 수 있다. 다음은 DB의 이름을 추출해보곘다. 역시 테스트해본 결과, DB의 이름이 "dvwa"이므로 여기서는 첫번째 글자에 대한 검증만 실행해보겠다.

성공

출력값의 "200 OK"를 통해 DB 이름의 첫글자가 d임을 확인할 수 있다.

'Wargame > DVWA' 카테고리의 다른 글

DVWA (CSRF)  (0) 2023.03.18
DVWA (XSS)  (0) 2023.03.17
DVWA (SQL Injection)  (0) 2023.03.15
DVWA (Insecure CAPTCHA)  (0) 2023.03.14
DVWA (File Upload)  (0) 2023.03.13
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!