Sqlmap常用指令(方法)總結


Sqlmap使用方法總結

在網上找了很多教程,都是零零散散的,找到了兩位位前輩的博客,應該是翻譯的官方文檔,感謝前輩們做出的貢獻.

本文參考:漏洞人生sqlmap用戶手冊中文版

sqlmap簡介

sqlmap支持五種不同的注入模式:

  • 基於布爾的盲注
  • 基於時間的盲注
  • 基於報錯注入
  • 聯合查詢注入
  • 堆疊注入

sqlmap支持九種不同的數據庫:

​ MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB

常用語句

  • 自動檢測

    sqlmap -u http:/xxxxxx.xxx -batch

  • 指定參數

    sqlmap -u http:/xxxxxx.xxx/?id=x&param=x -p id

  • 指定數據庫類型

    sqlmap -u http:/xxxxxx.xxx –dbms mysql

  • 從文件讀取http請求報文

    sqlmap -r 1.txt -batch

  • 設置cookie

    sqlmap -u http:/xxxxxx.xxx --cookie="JSESSION=asd"

  • 查詢數據庫

    sqlmap -u http:/xxxxxx.xxx --dbs

  • 查詢表

    sqlmap -u http:/xxxxxx.xxx -D 數據庫名 --tables

  • 查字段名

    sqlmap -u http:/xxxxxx.xxx -D 數據庫名 -T 表名 --columns

  • 爆數據

    sqlmap -u http:/xxxxxx.xxx -D 數據庫名 -T 表名 -C "字段名1,字段名2"--dump

  • 在數據庫中搜索字段 / 表 / 數據庫名

    sqlmap -u http:/xxxxxx.xxx --search -C/T/D admin,password

  • 寫入文件
    sqlmap -u http://xxx.xxx -–file-dest "要寫入的文件在本地的路徑" –file-write "目標路徑"

  • 調用shell

    sqlmap -u http://xxx.xxx --os-shell

  • tip: 是否跟隨302跳轉

    ​ 當注入頁面錯誤的時候,自動跳轉到另一個頁面的時候需要跟隨302,
    ​ 當注入錯誤的時候,先報錯再跳轉的時候,不需要跟隨302。
    ​ 目的是要追蹤到錯誤信息。

sqlmap詳細命令

用法

python sqlmap.py [選項]

選項

-h, --help            顯示基本幫助信息並退出
-hh                   顯示高級幫助信息並退出
--version             顯示程序版本信息並退出
-v VERBOSE            輸出信息詳細程度級別:0-6(默認為 1)

目標

​ 至少提供一個以下選項以指定目標

-d DIRECT           直接連接數據庫
-u URL, --url=URL   目標 URL(例如:"http://www.site.com/vuln.php?id=1")
-l LOGFILE          從 Burp 或 WebScarab 代理的日志文件中解析目標地址
-m BULKFILE         從文本文件中獲取批量目標
-r REQUESTFILE      從文件中讀取 HTTP 請求
-g GOOGLEDORK       使用 Google dork 結果作為目標
-c CONFIGFILE       從 INI 配置文件中加載選項

請求

​ 以下選項可以指定連接目標地址的方式

--method=METHOD     強制使用提供的 HTTP 方法(例如:PUT)
--data=DATA         使用 POST 發送數據串(例如:"id=1")
--param-del=PARA..  設置參數值分隔符(例如:&)
--cookie=COOKIE     指定 HTTP Cookie(例如:"PHPSESSID=a8d127e..")
--cookie-del=COO..  設置 cookie 分隔符(例如:;)
--load-cookies=L..  指定以 Netscape/wget 格式存放 cookies 的文件
--drop-set-cookie   忽略 HTTP 響應中的 Set-Cookie 參數
--user-agent=AGENT  指定 HTTP User-Agent
--random-agent      使用隨機的 HTTP User-Agent
--host=HOST         指定 HTTP Host
--referer=REFERER   指定 HTTP Referer
-H HEADER, --hea..  設置額外的 HTTP 頭參數(例如:"X-Forwarded-For: 127.0.0.1")
--headers=HEADERS   設置額外的 HTTP 頭參數(例如:"Accept-Language: fr\nETag: 123")
--auth-type=AUTH..  HTTP 認證方式(Basic,Digest,NTLM 或 PKI)
--auth-cred=AUTH..  HTTP 認證憑證(username:password)
--auth-file=AUTH..  HTTP 認證 PEM 證書/私鑰文件
--ignore-code=IG..  忽略(有問題的)HTTP 錯誤碼(例如:401)
--ignore-proxy      忽略系統默認代理設置
--ignore-redirects  忽略重定向嘗試
--ignore-timeouts   忽略連接超時
--proxy=PROXY       使用代理連接目標 URL
--proxy-cred=PRO..  使用代理進行認證(username:password)
--proxy-file=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..  使用 POST 方法發送合法的數據
--safe-req=SAFER..  從文件中加載合法的 HTTP 請求
--safe-freq=SAFE..  每訪問兩次給定的合法 URL 才發送一次測試請求
--skip-urlencode    不對 payload 數據進行 URL 編碼
--csrf-token=CSR..  設置網站用來反 CSRF 攻擊的 token
--csrf-url=CSRFURL  指定可提取防 CSRF 攻擊 token 的 URL
--force-ssl         強制使用 SSL/HTTPS
--hpp               使用 HTTP 參數污染攻擊
--eval=EVALCODE     在發起請求前執行給定的 Python 代碼(例如:
                    "import hashlib;id2=hashlib.md5(id).hexdigest()")

優化

​ 以下選項用於優化 sqlmap 性能

-o                  開啟所有優化開關
--predict-output    預測常用請求的輸出
--keep-alive        使用持久的 HTTP(S) 連接
--null-connection   僅獲取頁面大小而非實際的 HTTP 響應
--threads=THREADS   設置 HTTP(S) 請求並發數最大值(默認為 1)

注入

​ 以下選項用於指定要測試的參數,
​ 提供自定義注入 payloads 和篡改參數的腳本

-p TESTPARAMETER    指定需要測試的參數
--skip=SKIP         指定要跳過的參數
--skip-static       指定跳過非動態參數
--param-exclude=..  用正則表達式排除參數(例如:"ses")
--dbms=DBMS         指定后端 DBMS(Database Management System,
                    數據庫管理系統)類型(例如:MySQL)
--dbms-cred=DBMS..  DBMS 認證憑據(username:password)
--os=OS             指定后端 DBMS 的操作系統類型
--invalid-bignum    將無效值設置為大數
--invalid-logical   對無效值使用邏輯運算
--invalid-string    對無效值使用隨機字符串
--no-cast           關閉 payload 構造機制
--no-escape         關閉字符串轉義機制
--prefix=PREFIX     注入 payload 的前綴字符串
--suffix=SUFFIX     注入 payload 的后綴字符串
--tamper=TAMPER     用給定腳本修改注入數據

檢測

​ 以下選項用於自定義檢測方式

--level=LEVEL       設置測試等級(1-5,默認為 1)
--risk=RISK         設置測試風險等級(1-3,默認為 1)
--string=STRING     用於確定查詢結果為真時的字符串
--not-string=NOT..  用於確定查詢結果為假時的字符串
--regexp=REGEXP     用於確定查詢結果為真時的正則表達式
--code=CODE         用於確定查詢結果為真時的 HTTP 狀態碼
--text-only         只根據頁面文本內容對比頁面
--titles            只根據頁面標題對比頁面

技術

​ 以下選項用於調整特定 SQL 注入技術的測試方法

--technique=TECH    使用的 SQL 注入技術(默認為“BEUSTQ”,譯者注:
                    B: Boolean-based blind SQL injection(布爾型盲注)
                    E: Error-based SQL injection(報錯型注入)
                    U: UNION query SQL injection(聯合查詢注入)
                    S: Stacked queries SQL injection(堆疊查詢注入)
                    T: Time-based blind SQL injection(時間型盲注)
                    Q: inline Query injection(內聯查詢注入)
--time-sec=TIMESEC  延遲 DBMS 的響應秒數(默認為 5)
--union-cols=UCOLS  設置聯合查詢注入測試的列數目范圍
--union-char=UCHAR  用於暴力猜解列數的字符
--union-from=UFROM  設置聯合查詢注入 FROM 處用到的表
--dns-domain=DNS..  設置用於 DNS 滲出攻擊的域名(譯者注:
                    推薦閱讀《在SQL注入中使用DNS獲取數據》
                    http://cb.drops.wiki/drops/tips-5283.html,
                    在后面的“技術”小節中也有相應解釋)
--second-url=SEC..  設置二階響應的結果顯示頁面的 URL(譯者注:
                    該選項用於 SQL 二階注入)
--second-req=SEC..  從文件讀取 HTTP 二階請求

指紋識別

 -f, --fingerprint   執行廣泛的 DBMS 版本指紋識別

枚舉

​ 以下選項用於獲取后端 DBMS 的信息,結構和數據表中的數據。
​ 此外,還可以運行你輸入的 SQL 語句

-a, --all           獲取所有信息、數據
-b, --banner        獲取 DBMS banner
--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 注釋
-D DB               指定要枚舉的 DBMS 數據庫
-T TBL              指定要枚舉的 DBMS 數據表
-C COL              指定要枚舉的 DBMS 數據列
-X EXCLUDE          指定不枚舉的 DBMS 標識符
-U USER             指定枚舉的 DBMS 用戶
--exclude-sysdbs    枚舉所有數據表時,指定排除特定系統數據庫
--pivot-column=P..  指定主列
--where=DUMPWHERE   在轉儲表時使用 WHERE 條件語句
--start=LIMITSTART  指定要導出的數據表條目開始行數
--stop=LIMITSTOP    指定要導出的數據表條目結束行數
--first=FIRSTCHAR   指定獲取返回查詢結果的開始字符位
--last=LASTCHAR     指定獲取返回查詢結果的結束字符位
--sql-query=QUERY   指定要執行的 SQL 語句
--sql-shell         調出交互式 SQL shell
--sql-file=SQLFILE  執行文件中的 SQL 語句

暴力破解

​ 以下選項用於暴力破解測試

--common-tables     檢測常見的表名是否存在
--common-columns    檢測常用的列名是否存在

用戶自定義函數注入

​ 以下選項用於創建用戶自定義函數

--udf-inject        注入用戶自定義函數
--shared-lib=SHLIB  共享庫的本地路徑

訪問文件系統

​ 以下選項用於訪問后端 DBMS 的底層文件系統

--file-read=FILE..  讀取后端 DBMS 文件系統中的文件
--file-write=FIL..  寫入到后端 DBMS 文件系統中的文件
--file-dest=FILE..  使用絕對路徑寫入到后端 DBMS 中的文件

訪問操作系統

​ 以下選項用於訪問后端 DBMS 的底層操作系統

--os-cmd=OSCMD      執行操作系統命令
--os-shell          調出交互式操作系統 shell
--os-pwn            調出 OOB shell,Meterpreter 或 VNC
--os-smbrelay       一鍵調出 OOB shell,Meterpreter 或 VNC
--os-bof            利用存儲過程的緩沖區溢出
--priv-esc          數據庫進程用戶提權
--msf-path=MSFPATH  Metasploit 框架的本地安裝路徑
--tmp-path=TMPPATH  遠程臨時文件目錄的絕對路徑

訪問 Windows 注冊表:

​ 以下選項用於訪問后端 DBMS 的 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 注冊表鍵值類型

通用選項:

​ 以下選項用於設置通用的參數

-s SESSIONFILE      從文件(.sqlite)中讀入會話信息
-t TRAFFICFILE      保存所有 HTTP 流量記錄到指定文本文件
--batch             從不詢問用戶輸入,使用默認配置
--binary-fields=..  具有二進制值的結果字段(例如:"digest")
--check-internet    在訪問目標之前檢查是否正常連接互聯網
--crawl=CRAWLDEPTH  從目標 URL 開始爬取網站
--crawl-exclude=..  用正則表達式篩選爬取的頁面(例如:"logout")
--csv-del=CSVDEL    指定輸出到 CVS 文件時使用的分隔符(默認為“,”)
--charset=CHARSET   指定 SQL 盲注字符集(例如:"0123456789abcdef")
--dump-format=DU..  導出數據的格式(CSV(默認),HTML 或 SQLITE)
--encoding=ENCOD..  指定獲取數據時使用的字符編碼(例如:GBK)
--eta               顯示每個結果輸出的預計到達時間
--flush-session     清空當前目標的會話文件
--forms             解析並測試目標 URL 的表單
--fresh-queries     忽略存儲在會話文件中的查詢結果
--har=HARFILE       將所有 HTTP 流量記錄到一個 HAR 文件中
--hex               獲取數據時使用 hex 轉換
--output-dir=OUT..  自定義輸出目錄路徑
--parse-errors      從響應中解析並顯示 DBMS 錯誤信息
--preprocess=PRE..  使用給定腳本預處理響應數據
--repair            重新導出具有未知字符的數據(?)
--save=SAVECONFIG   將選項設置保存到一個 INI 配置文件
--scope=SCOPE       用正則表達式從提供的代理日志中過濾目標
--test-filter=TE..  根據 payloads 和/或標題(例如:ROW)選擇測試
--test-skip=TEST..  根據 payloads 和/或標題(例如:BENCHMARK)跳過部分測試
--update            更新 sqlmap

雜項

-z MNEMONICS        使用短助記符(例如:“flu,bat,ban,tec=EU”)
--alert=ALERT       在找到 SQL 注入時運行 OS 命令
--answers=ANSWERS   設置預定義回答(例如:“quit=N,follow=N”)
--beep              出現問題提醒或在發現 SQL 注入時發出提示音
--cleanup           指定移除 DBMS 中的特定的 UDF 或者數據表
--dependencies      檢查 sqlmap 缺少(可選)的依賴
--disable-coloring  關閉彩色控制台輸出
--gpage=GOOGLEPAGE  指定頁碼使用 Google dork 結果
--identify-waf      針對 WAF/IPS 防護進行徹底的測試
--mobile            使用 HTTP User-Agent 模仿智能手機
--offline           在離線模式下工作(僅使用會話數據)
--purge             安全刪除 sqlmap data 目錄所有內容
--skip-waf          跳過啟發式檢測 WAF/IPS 防護
--smart             只有在使用啟發式檢測時才進行徹底的測試
--sqlmap-shell      調出交互式 sqlmap shell
--tmp-dir=TMPDIR    指定用於存儲臨時文件的本地目錄
--web-root=WEBROOT  指定 Web 服務器根目錄(例如:"/var/www")
--wizard            適合初級用戶的向導界面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM