Burp Suite · 2026-01-17

Blind SQLi 탐지와 시간 기반 페이로드 활용

시간 기반 Blind SQLi의 원리와 Burp를 이용한 실무적 흐름을 초점으로 정리한 방법론

작성일 : 2026-01-17 ㆍ 작성자 : 관리자
post
목차

소개

Blind SQL Injection은 응답 내용에 직접적인 변화가 없을 때도 데이터베이스와 상호작용을 확인하는 기법이다. 특히 시간 기반 방법은 응답 지연을 이용해 참/거짓을 판별한다. 이 글은 Burp를 활용한 시간 기반 탐지 흐름을 초보자도 이해하기 쉬운 단계로 정리한다.

시간 기반 Blind SQLi의 기본 원리

왜 시간 기반을 사용하는가

애플리케이션이 에러 메시지를 숨기거나 출력값을 동일하게 처리할 때 내용 기반 탐지는 실패한다. 이런 경우에 쿼리 내부에서 조건이 참이면 데이터베이스를 일정 시간 지연시키는 함수(SLEEP 등)를 호출해 차이를 만들어 낸다. 네트워크 응답 지연이 탐지 신호가 된다.

공통 페이로드 구조

기본 아이디어는 조건식 ? 지연 : 즉시 반환의 형태다. 예를 들면 다음과 같다.

' OR IF(SUBSTRING((SELECT database()),1,1)='a', SLEEP(5), 0) -- 

이 페이로드는 데이터베이스 이름의 첫 글자가 'a'이면 5초 동안 지연시킨다. 응답 시간이 늘어나면 조건이 참임을 유추할 수 있다.

준비물과 Burp 설정

필수 도구

  • Burp Suite (Proxy, Repeater, Intruder)
  • 타임아웃 측정을 위한 안정적 네트워크
  • 목표 애플리케이션에 대한 합법적 테스트 허가

Burp 기본 설정

  • Proxy에서 대상 트래픽을 캡처
  • Options > Connections에서 적절한 타임아웃 값 확인
  • Intruder의 Request engine 속도 제한을 확인해 거짓 양성 최소화

시간 기반 탐지 절차 (Burp 활용)

1. 취약점 후보 식별

먼저 파라미터가 포함된 요청을 Repeater로 보낸다. 반응이 정상인지 확인한 뒤, 페이로드가 삽입 가능한 위치(쿼리 파라미터, 쿠키, 헤더 등)를 찾는다.

2. 간단한 지연 테스트

먼저 짧은 지연을 주는 페이로드로 응답 시간 변화를 관찰한다. 예시 페이로드는 위의 IF 구조를 사용한다. Repeater에서 여러 번 테스트해 네트워크 노이즈를 확인한다.

3. 자동화된 대입 (Intruder)

반복 확인이 필요할 때는 Intruder를 사용해 여러 조건을 자동으로 시험한다. 위치를 설정하고 페이로드 리스트를 넣는다. 공격 타입은 보통 "Sniper" 또는 "Cluster Bomb"이 적합하다.

-- 예시 페이로드 목록 (파일 또는 직접 입력)
' OR IF(SUBSTRING((SELECT table_name FROM information_schema.tables LIMIT 0,1),1,1)='a', SLEEP(5), 0) --
' OR IF(SUBSTRING((SELECT table_name FROM information_schema.tables LIMIT 0,1),1,1)='b', SLEEP(5), 0) --

4. 결과 해석

각 요청의 응답 시간을 기록한다. 특정 페이로드에서 일관되게 지연이 발생하면 해당 조건이 참일 가능성이 높다. 네트워크 변동을 고려해 여러 번 반복 후 평균을 취하는 것이 안전하다.

실전에서의 세부 고려사항

노이즈와 타임아웃 처리

일시적인 네트워크 지연 또는 서버 부하로 인한 오탐을 줄이기 위해 각 조건에 대해 다수의 시도를 권장한다. Burp에서 요청 간격을 넉넉히 두고 타임아웃 값을 충분히 높게 설정한다.

데이터베이스별 함수 차이

MySQL은 SLEEP(), PostgreSQL은 pg_sleep() 등 함수명이 다르다. 대상 DB에 맞는 지연 함수를 사용해야 정확한 결과를 얻는다.

안전하고 책임 있는 테스트

테스트는 항상 소유자 또는 권한자의 명시적 허가 하에서 수행해야 한다. 과도한 요청은 서비스 장애를 초래할 수 있으므로 공격 속도와 반복 횟수를 조절한다. 결과는 로그와 함께 보관해 재현 가능성을 확보한다.

요약과 권장 흐름

  • 1) Proxy로 대상 요청 캡처
  • 2) Repeater에서 수동으로 기본 페이로드 확인
  • 3) Intruder로 자동화된 후보 탐색
  • 4) 다중 시도와 평균 응답 시간으로 결과 검증
  • 5) 테스트 허가와 부하 관리 준수

부록: 자주 쓰이는 시간 기반 페이로드 예시

-- MySQL 기본형
' OR IF(SUBSTRING((SELECT database()),1,1)='a', SLEEP(5), 0) -- 

-- PostgreSQL 예
' OR (SELECT CASE WHEN (SUBSTRING(current_database(),1,1) = 'a') THEN pg_sleep(5) ELSE NULL END) -- 

-- 주의: DB에 따라 함수명과 문법 차이 존재

위 흐름을 따르면 시간 기반 Blind SQLi의 원리를 이해하고 Burp를 통해 안정적으로 탐지할 수 있다. 과정 중에는 항상 윤리적 기준과 운영 환경 영향을 우선 고려한다.

Burp Blind SQLi 테스트 시간 기반 SQLi Burp Burp SQLi 페이로드 Blind SQLi 시간 기반 페이로드 Burp Suite Intruder 활용법 SQL 인젝션 탐지