sqlmap -u "http://example.com/page.php?id=1" \
--tor --tor-type=SOCKS5 \
--columns \
-c ./SecLists/Discovery/Web-Content/common-columns.txt
| 옵션 | 설명 |
|---|---|
| -u | 대상 URL (파라미터 포함) |
| id=1 | SQL 인젝션을 시도할 대상 파라미터 + 값 |
| --columns | 특정 DB/테이블에서 컬럼명 추출 시도 |
| -c | 사용할 컬럼 이름 워드리스트 지정 |
| --tor | Tor 네트워크를 통해 익명으로 공격 |
| --tor-type=SOCKS5 | Tor 프록시의 유형 지정 (기본은 127.0.0.1:9050) |
네, 있어야 합니다.
1 AND 1=1, 1 AND 1=2 같은 페이로드로 서버 응답 차이를 분석할 수 있습니다.id=1 같은 파라미터를 추출id=1', id=1 AND 1=1, id=1 AND 1=2--dbs, --tables, --columns 등으로 정보 수집--common-tables, --common-columns 등으로 이름 추측 가능이 옵션들은 대상 DB에서 테이블/컬럼 이름을 모를 때 유용합니다.
--common-tables: 자주 쓰이는 테이블 이름 리스트로 브루트포싱--common-columns: 자주 쓰이는 컬럼 이름 리스트로 브루트포싱브루트포싱할 워드리스트는 SecLists 같은 데이터셋에서 사용:
-c ./SecLists/Discovery/Web-Content/common-columns.txt
| 항목 | sqlmap | ffuf / wfuzz |
|---|---|---|
| 공격 위치 지정 | 파라미터 값에서 자동 탐지 | FUZZ 키워드로 명시적으로 지정 |
| 페이로드 방식 | SQL 인젝션 페이로드 자동 삽입 | 사용자 정의 단어 리스트 삽입 |
| 목적 | SQL 인젝션 자동화 | 디렉토리, 파라미터, 값 등 브루트포싱 |
| 주입 위치 | URL, POST, Cookie 등 자동 분석 | 사용자가 FUZZ로 지정 |
| 워드리스트 | 기본 제공 + 사용자 지정 가능 | 보통 SecLists 사용 |
GET /page.php?id=1 HTTP/1.1
GET /page.php?id=1'-- HTTP/1.1
GET /page.php?id=1 AND 1=1-- HTTP/1.1
GET /page.php?id=1 AND 1=2-- HTTP/1.1
GET /page.php?id=1' OR '1'='1-- HTTP/1.1
이렇게 다양한 페이로드로 테스트해서 응답의 차이(diff)를 분석하고, 차이가 생기면 “여기 인젝션 가능!”이라고 판단합니다.
sqlmap은 웹사이트한테 “숫자 대신 이상한 쿼리를 살짝 넣어볼게~” 하고 장난치는 도구야. id=1은 그 장난칠 자리야. FUZZ는 “여기다가 단어집 뒤져서 하나씩 넣어볼게” 하는 방식이고, sqlmap은 자동으로 페이로드 주입하고, DB에서 뭘 뽑아낼지까지 알려줘.
id=1 같은 파라미터와 값은 sqlmap이 주입할 위치를 찾는 데 필수--columns, --common-* 옵션은 정보 수집 또는 이름 추측을 위한 브루트포싱용