sqlmap 使用手冊 官方wiki Github sqlmap也是滲透中常用的一個註入工具,可以用來檢測sql註入漏洞。 功能與作用 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,F ...
sqlmap 使用手冊
sqlmap也是滲透中常用的一個註入工具,可以用來檢測sql註入漏洞。
功能與作用
- 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB和HSQLDB資料庫管理系統。
- 完全支持五種SQL註入技術:基於布爾值的盲註,基於時間的盲註,基於錯誤註入,聯合查詢註入和堆查詢註入。
- 支持通過提供DBMS憑據,IP地址,埠和資料庫名稱直接連接到資料庫,而無需通過SQL註入。
- 可以提供單個目標URL,從 Burp 代理或 WebScarab 代理請求日誌文件獲取目標列表,從文本文件獲取整個HTTP請求,或通過向sqlmap提供sqlmap查詢Google dork來獲取目標列表搜索引擎並解析其結果頁面。您還可以定義基於正則表達式的作用域,用於標識要測試的解析地址。
- 測試提供了GET參數,POST參數,HTTP Cookie頭值,HTTP用戶代理頭值和HTTP Referer頭值來識別和利用SQL註入漏洞。還可以指定要測試的特定參數的逗號分隔列表。
- 指定併發 HTTP(S) 請求(多線程)的最大數量的選項,以加快盲SQL註入技術。反之亦然,還可以指定在每個 HTTP(S) 請求之間保持的秒數。其他優化開關也加快了開發。
- HTTP Cookie頭字元串支持,當web應用程式需要基於cookie的身份驗證,並且您有這樣的數據或在您只是想測試和利用SQL註入這樣的頭值有用。您還可以指定始終對Cookie進行URL編碼。
- 自動處理來自應用程式的HTTP Set-Cookie頭,如果會話過期,則重新建立會話。還支持測試和利用這些值。反之亦然,你也可以強制忽略任何Set-Cookie頭。
- HTTP協議基本,Digest,NTLM和證書認證支持。
- HTTP(S)代理支持將請求傳遞到目標應用程式,該目標應用程式也與HTTPS請求和已驗證的代理伺服器一起工作。
- 偽造HTTP Referer頭值和由用戶指定或從文本文件中隨機選擇的HTTP User-Agent標頭值的選項。
- 支持輸出消息的詳細程度:七個級別。
- 支持從目標URL解析HTML表單,並針對這些頁面偽造 HTTP(S) 請求,以針對漏洞測試表單參數。
- 在用戶的開關和特征方面的粒度和靈活性。
- 支持每個查詢的實時更新的估計到達時間,為用戶提供檢索查詢輸出所需的時間概覽。
- 在獲取數據時自動將會話(查詢及其輸出,即使是部分檢索)保存在文本文件上,並通過解析會話文件來恢復註入。
- 支持從配置INI文件讀取選項,而不是每次指定命令行上的參數。還支持基於提供的命令行生成配置文件。
- 支持在本地SQLite 3資料庫上複製後端資料庫表結構和條目。
- 支持從subversion存儲庫更新到最新的開發版本。
- 支持解析HTTP(S)響應並向用戶顯示任何DBMS錯誤消息。
- 與其他IT安全開源項目整合,Metasploit和w3af。
如何使用?
Usage(用法): python sqlmap.py [options] Options(選項): -h, --help 顯示基礎幫助信息並退出 -hh 顯示更詳細的幫助信息並退出 --version 顯示版本號並退出 -v VERBOSE 詳細級別:0 - 6 (預設1) Target(目標): 以下至少需要設置其中一個選項,設置目標URL -d DIRECT 使用連接字元串連接到資料庫 -u URL, --url=URL 目標 URL(例如 "http://www.site.com/vuln.php?id=1") -l LOGFILE 從 Burp 或 WebScarab 代理的日誌中解析目標 -x SITEMAPURL 從遠程 sitemap(.xml) 中解析目標 -m BULKFILE 從文本文件中掃描多個目標 -r REQUESTFILE 從一個文件中載入 HTTP 請求 -g GOOGLEDORK 處理 Google dork 的結果作為目標URL -c CONFIGFILE 從 INI 配置文件中載入選項 Request(請求): 這些選項可以用來指定如何連接到目標URL --method=METHOD 使用給定的 HTTP 訪問方法(例如 PUT) --data=DATA 通過 POST 發送的數據字元串 --param-del=PARA.. 用於分割參數值的字元 --cookie=COOKIE HTTP Cookie頭 --cookie-del=COO.. 用於分割 cookie 值的字元 --load-cookies=L.. 含 Netscape/wget 的 cookie 文件格式 --drop-set-cookie 忽略響應的 Set-Cookie 頭信息 --user-agent=AGENT 指定 HTTP User - Agent頭 --random-agent 使用隨機選定的HTTP User - Agent頭 --host=HOST 指定 HTTP Host 頭 --referer=REFERER 指定 HTTP Referer 頭 -H HEADER, --hea.. 指定其他頭信息(例如 "X-Forwarded-For: 127.0.0.1") --headers=HEADERS 指定其他多條頭信息,可換行(例如 "Accept-Language: fr\nETag: 123") --auth-type=AUTH.. HTTP身份驗證類型(Basic, Digest, NTLM or PKI) --auth-cred=AUTH.. HTTP身份驗證憑據(name:password) --auth-file=AUTH.. HTTP身份驗證 PEM cert/private 文件 --ignore-401 忽略 HTTP 401(Unauthorized) 錯誤 --ignore-proxy 忽略系統預設的HTTP代理 --ignore-redirects 忽略重定向 --ignore-timeouts 忽略連接超時 --proxy=PROXY 使用代理連接到目標 --proxy-cred=PRO.. 代理身份驗證憑據(name:password --proxy-file=PRO.. 從文件載入代理列表 --tor 使用 Tor 匿名網路 --tor-port=TORPORT 設置 Tor 代理埠 --tor-type=TORTYPE 設置 Tor 代理類型(HTTP, SOCKS4 or SOCKS5 (預設)) --check-tor 檢查 Tor 正確使用 --delay=DELAY 在每個HTTP請求之間的延遲時間,單位為秒 --timeout=TIMEOUT 等待連接超時的時間(預設為30秒) --retries=RETRIES 連接超時後重新連接的時間(預設3秒) --randomize=RPARAM 隨機改變給定參數的值 --safe-url=SAFEURL 測試期間經常訪問的 URL 地址 --safe-post=SAFE.. 將數據發送到安全 URL --safe-req=SAFER.. 從文件載入安全 Http 請求 --safe-freq=SAFE.. 兩次訪問之間測試請求,給出安全的URL --skip-urlencode 跳過載荷數據的 URL 編碼 --csrf-token=CSR.. 設置 csrf token 標記名稱 --csrf-url=CSRFURL 獲取 csrf token URL 地址 --force-ssl 強制使用 SSL/HTTPS --hpp 打開 hpp 參數污染 --eval=EVALCODE 運行 Python 代碼來重新設置或添加值(例如 "import hashlib;id2=hashlib.md5(id).hexdigest()") Optimization(優化): 這些選項可用於優化 sqlmap 性能 -o 開啟所有優化 --predict-output 預測常見查詢輸出 --keep-alive 使用持久 HTTP(s) 連接 --null-connection 沒有實際的 HTTP 響應體檢索頁面長度 --threads=THREADS 最大HTTP (s) 請求數(預設1) Injection(註入): 這些選線可以用來指定要測試的參數,提供自定義載荷和選項干預腳本 -p TESTPARAMETER 可測試參數 --skip=SKIP 跳過給定參數的測試 --skip-static 跳過不是動態參數的測試 --param-exclude=.. 使用正則表達式從測試中排除參數(例如“ses”) --dbms=DBMS 將後端 DBMS 強製為此值 --dbms-cred=DBMS.. DBMS認證憑證 (user:password) --os=OS 將後端DBMS操作系統強製為此值 --invalid-bignum 使用大數字使值無效 --invalid-logical 使用邏輯操作使值無效 --invalid-string 使用隨機字元串使值無效 --no-cast 關閉載荷casting機制 --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代碼 --text-only 僅根據文字內容比較網頁 --titles 僅根據其標題比較網頁 Techniques(技術): 這些選項可用於調整特定SQL註入技術的測試 --technique=TECH SQL註入技術使用(預設“BEUSTQ”) --time-sec=TIMESEC DBMS響應的延遲時間(預設為5秒) --union-cols=UCOLS 定列範圍用於測試UNION查詢註入 --union-char=UCHAR 用於暴力猜解列數的字元 --union-from=UFROM 要在UNION查詢SQL註入的FROM部分使用的表 --dns-domain=DNS.. 用於DNS外發攻擊的功能變數名稱 --second-order=S.. 產生的網頁網址搜索二級響應 Fingerprint(指紋): -f, --fingerprint 執行擴展的DBMS版本指紋 Enumeration(枚舉): 這些選項可用於枚舉後端資料庫 管理系統信息,表中包含的結構和數據。 此外,您可以運行您自己的SQL語句 -a, --all 檢索所有 -b, --banner 檢索 DBMS banner --current-user 檢索 DBMS 當前用戶 --current-db 檢索 DBMS 當前資料庫 --hostname 檢索 DBMS 伺服器 hostname --is-dba 檢測 DBMS 當前用戶是否為DBA --users 枚舉 DBMS 用戶 --passwords 枚舉 DBMS 用戶密碼散列 --privileges 枚舉 DBMS 用戶許可權 --roles 枚舉 DBMS 用戶角色 --dbs 枚舉 DBMS 資料庫 --tables 枚舉 DBMS 資料庫表 --columns 枚舉 DBMS 資料庫表列 --schema 枚舉 DBMS schema --count 檢索表的條目數 --dump 導出 DBMS 資料庫表條目 --dump-all 導出所有 DBMS 資料庫表條目 --search 搜索列,表,資料庫名稱 --comments 檢索 DBMS 註釋 -D DB DBMS 資料庫進行枚舉 -T TBL DBMS 資料庫表進行枚舉 -C COL DBMS 資料庫表列進行枚舉 -X EXCLUDECOL DBMS 資料庫表列不進行枚舉 -U USER DBMS 用戶進行枚舉 --exclude-sysdbs 枚舉表時排除DBMS系統資料庫 --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語句 Brute force(強力): 這些選項可用於運行強力檢查 --common-tables 檢查公用表的存在 --common-columns 檢查公共列的存在 User-defined function injection(用戶定義的函數註入): 這些選項可用於創建用戶定義的函數 --udf-inject 註入用戶定義函數 --shared-lib=SHLIB 共用庫的本地路徑 File system access(文件系統訪問): 這些選項可用於訪問後端資料庫管理系統底層文件系統 --file-read=RFILE 從後端 DBMS 文件系統讀取文件 --file-write=WFILE 在後端 DBMS 文件系統上寫入本地文件 --file-dest=DFILE 寫入後端DBMS絕對文件路徑 Operating system access(操作系統訪問): 這些選項可用於訪問後端資料庫管理系統底層操作系統 --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 registry access(Windows 註冊表訪問): 這些選項可用於訪問後端資料庫管理系統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流量記錄到文本文件中 --batch 不詢問用戶,使用預設行為 --binary-fields=.. 具有二進位值的結果欄位(例如 "digest") --charset=CHARSET 強制使用用於數據檢索的字元編碼 --crawl=CRAWLDEPTH 從目標網址開始抓取網站 --crawl-exclude=.. 使用正則表達式排除抓取的網站 (例如 "logout") --csv-del=CSVDEL 分隔CSV輸出中使用的字元 (default ",") --dump-format=DU.. 導出數據的格式 (CSV (預設), HTML or SQLITE) --eta 顯示每個輸出的預計時間 --flush-session 刷新當前目標的會話文件 --forms 在目標網址上解析和測試表單 --fresh-queries 忽略存儲在會話文件中的查詢結果 --hex 使用DBMS hex函數進行數據檢索 --output-dir=OUT.. 自定義輸出目錄路徑 --parse-errors 解析和顯示響應中的DBMS錯誤消息 --save=SAVECONFIG 將選項保存到配置INI文件 --scope=SCOPE 正則表達式過濾從提供的代理日誌的目標 --test-filter=TE.. 根據載荷或標題選擇測試 (例如 ROW) --test-skip=TEST.. 根據載荷或標題跳過測試 (例如 BENCHMARK) --update 更新 sqlmap Miscellaneous(其他): -z MNEMONICS 使用簡語 (例如 "flu,bat,ban,tec=EU") --alert=ALERT 在找到 SQL 註入時運行主機操作系統命令 --answers=ANSWERS 設置問題答案 (例如 "quit=N,follow=N") --beep 在找到 SQL 註入時詢問 --cleanup 從 sqlmap 特定的 UDF 和表清理 DBMS --dependencies 檢查是否缺少(非核心)sqlmap依賴關係 --disable-coloring 禁用控制台輸出著色 --gpage=GOOGLEPAGE 使用特定頁碼的Google dork結果 --identify-waf 對 WAF/IPS/IDS 保護進行全面測試 --mobile 通過HTTP User-Agent標頭模仿智能手機 --offline 在離線模式下工作(僅使用會話數據) --purge-output 安全地從輸出目錄中刪除所有內容 --skip-waf 跳過啟髮式檢測 WAF/IPS/IDS 保護 --smart 只有在正啟髮式時才進行徹底測試 --sqlmap-shell 提示互動式sqlmap shell --tmp-dir=TMPDIR 用於導出臨時文件的本地目錄 --wizard 為初學者用戶提供簡單的嚮導界面