sqlmap
重要參考 http://www.kali.org.cn/forum-75-1.html
SQLmap是一款用來檢測與利用SQL漏洞的注入神器。開源的自動化SQL注入工具,由Python寫成,具有如下特點:
- 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多種數據庫管理系統。
- 完全支持布爾型盲注、時間型盲注、基於錯誤信息的注入、聯合查詢注入和堆查詢注入。
- 在數據庫證書、IP地址、端口和數據庫名等條件允許的情況下支持不通過SQL注入點而直接連接數據庫。
- 支持枚舉用戶、密碼、哈希、權限、角色、數據庫、數據表和列。
- 支持自動識別密碼哈希格式並通過字典破解密碼哈希。
- 支持完全地下載某個數據庫中的某個表,也可以只下載某個表中的某幾列,甚至只下載某一列中的部分數據,這完全取決於用戶的選擇。
- 支持在數據庫管理系統中搜索指定的數據庫名、表名或列名
- 當數據庫管理系統是MySQL、PostgreSQL或Microsoft SQL Server時支持下載或上傳文件。
當數據庫管理系統是MySQL、PostgreSQL或Microsoft SQL Server時支持執行任意命令並回現標准輸出。
安裝
- Sqlmap的開源項目,托管在github,最簡單的安裝方式便是使用git,執行如下命令:
- git clone https://github.com/sqlmapproject/sqlmap.git
- 片刻后命令執行完畢,可以看到當前目錄中多了一個名為“sqlmap”的目錄,
該目錄中保存着Sqlmap的Python源碼、配置文件和文檔。
由於Python是解釋執行的語言,不用編譯,所以至此最新版的Sqlmap已經安裝完成
輸出級別(Output verbosity)
參數:-v
Sqlmap的輸出信息按從簡到繁共分為7個級別(和葫蘆娃一樣多),依次為0、1、2、3、4、5和6。使用參數“-v <級別>”來指定某個等級,如使用參數“-v 6”來指定輸出級別為6。默認輸出級別為1。各個輸出級別的描述如下:
0:只顯示Python的tracebacks信息、錯誤信息[ERROR]和關鍵信息[CRITICAL];
1:同時顯示普通信息[INFO]和警告信息[WARNING];
2:同時顯示調試信息[DEBUG];
3:同時顯示注入使用的攻擊荷載;
4:同時顯示HTTP請求;
5:同時顯示HTTP響應頭;
6:同時顯示HTTP響應體。
各個級別輸出的信息詳細到什么程度,還需要自己嘗試下,親眼見到,才會有明確的認識。
使用格式: sqlmap [參數]
參數:
-h, –help 顯示基本的幫助文檔
-hh 顯示高級幫助
–version 顯示當前版本號
-v VERBOSE Verbosity level: 0-6 (default 1)
目標:
至少要提供這些參數中的一個來定義
參數:
-d DIRECT 用於連接數據庫的連接字符串
-u URL, –url=URL 目標URL (e.g. “http://www.site.com/vuln.php?id=1“)
-l LOGFILE 用Burp 或者 WebScarab解析目標代理文日志
-x SITEMAPURL 遠程解析目標網站的路徑
-m BULKFILE 掃描文件中的多個目標
-r REQUESTFILE 從文件中加載http地址
-g GOOGLEDORK 用谷歌解析目標
-c CONFIGFILE 從ini的配置文件加載
要求:
這些參數是用來如何連接到目標網站
–method=METHOD 對給定的HTTP方法(例如把武力使用)
–data=DATA 將要發送的數據字符串
–param-del=PARA.. 用於分裂參數值的字符
–cookie=COOKIE HTTP Cookie標頭值 cooike注入
–cookie-del=COO.. 用於分割餅干值的字符
–load-cookies=L.. 含Netscape / wget cookies文件格式
–drop-set-cookie 忽略設置的頭部信息
–user-agent=AGENT HTTP用戶代理標頭值
–random-agent 使用隨機選擇HTTP用戶代理標頭值
–host=HOST HTTP主機頭值
–referer=REFERER HTTP Referer報頭值
-H HEADER, –hea.. 額外的頭部信息 (e.g. “X-Forwarded-For: 127.0.0.1″)
–headers=HEADERS 額外的標題 (e.g. “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證書/私鑰文件
–ignore-401 忽略HTTP 401錯誤(未授權的)
–proxy=PROXY 使用代理連接到目標網址
–proxy-cred=PRO.. 代理身份驗證憑據(名稱:密碼)
–proxy-file=PRO.. 從文件中加載代理列表
–ignore-proxy 忽略系統默認代理設置
–tor 使用洋蔥路由網絡
–tor-port=TORPORT 設置洋蔥路由的代理端口
–tor-type=TORTYPE 設置Tor代理類型(HTTP、SOCKS4或SOCKS5(默認))
–check-tor 查看洋蔥路由的正確使用
–delay=DELAY 每個HTTP請求之間的想應時間
–timeout=TIMEOUT 等待超時連接(默認30)默認為秒
–retries=RETRIES 重試時,連接超時(默認3)
–randomize=RPARAM 給定參數的隨機變化值(s)
–safe-url=SAFEURL 在測試過程中經常訪問的網址地址
–safe-post=SAFE.. post數據發送到一個安全的網址
–safe-req=SAFER.. 安全HTTP請求從文件加載
–safe-freq=SAFE.. 一個給定的安全地址的兩次訪問之間的測試請求
–skip-urlencode 跳過有效載荷數據的網址編碼
–csrf-token=CSR.. 參數用來舉行反CSRF令牌
–csrf-url=CSRFURL URL地址訪問提取防CSRF令牌
–force-ssl 使用SSL / HTTPS力
–hpp 使用HTTP參數污染的方法
–eval=EVALCODE Evaluate provided Python code before the request
(e.g.”import hashlib;id2=hashlib.md5(id).hexdigest()”)
優化參數:
這些選項可用於優化性能sqlmap
-o 打開所有的優化開關
–predict-output 普通查詢輸出預測
–keep-alive 使用持久HTTP(S)連接
–null-connection 檢索頁面長度沒有實際的HTTP響應體
–threads=THREADS 最大並發HTTP請求數(S)(默認為1)
注入:
這些選項可以用來指定要測試的參數,提供自定義注入有效載荷和隨意篡改劇本
-p TESTPARAMETER 可檢驗參數(s)
–skip=SKIP 對給定參數的跳過測試(s)
–skip-static 跳過不出現動態的測試參數
–dbms=DBMS 強制后端數據庫管理系統到這個值
–dbms-cred=DBMS.. 數據庫管理系統認證證書(用戶:密碼)
–os=OS 強制后端的數據庫管理系統操作系統到這個值
–invalid-bignum 使用大數字無效值
–invalid-logical 使用邏輯操作的無效值
–invalid-string 使用隨機字符串無效值
–no-cast 關閉有效載荷模塊
–no-escape 關閉字符串逃逸機制
–prefix=PREFIX 注入有效載荷前綴字符串
–suffix=SUFFIX 注入有效載荷后綴字符串
–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”)
–time-sec=TIMESEC 延遲數據庫管理系統響應的秒數(默認為5)
–union-cols=UCOLS 為聯合查詢的SQL注入測試列范圍
–union-char=UCHAR 字符使用bruteforcing列數
–union-from=UFROM 表使用從聯合查詢的SQL注入的一部分
–dns-domain=DNS.. 使用的域名DNS泄露攻擊
–second-order=S.. 搜索的第二級響應結果頁面的網址
指紋:
-f, –fingerprint 執行廣泛的數據庫管理系統版本指紋
枚舉參數:
這些選項可以用來枚舉后端數據庫管理系統信息、結構和數據中包含的平台.此外,你可以運行你自己的SQL語句
-a, –all Retrieve everything
-b, –banner 檢索數據庫標志
–current-user 檢索數據庫管理系統當前用戶
–current-db 檢索數據庫
–hostname 檢索數據庫服務器的主機名
–is-dba 檢測當前用戶是不是數據庫的管理員
–users 枚舉數據庫用戶
–passwords 枚舉數據庫用戶密碼的哈希值
–privileges 枚舉數據庫管理系統用戶權限
–roles 枚舉數據庫管理系統用戶角色
–dbs 枚舉數據庫
–tables 枚舉數據庫管理系統中的數據庫表
–columns 枚舉數據庫管理中的數據庫表列
–schema 枚舉數據庫架構
–count 搜索表的條目數
–dump 扒褲衩子
–dump-all 扒數據庫數毛毛
–search 搜索數據庫列和數據庫名稱
–comments 檢測數據庫的信息
-D DB 枚舉數據庫
-T TBL 枚舉數據庫的表
-C COL 枚舉數據庫表的列
-X EXCLUDECOL 不枚舉的數據庫管理系統數據庫表
-U USER 數據庫用戶枚舉
–exclude-sysdbs Exclude DBMS system databases when enumerating tables
–pivot-column=P.. 主數據庫表名稱
–where=DUMPWHERE Use WHERE condition while table dumping
–start=LIMITSTART 查詢輸出第一個輸出條目的檢索
–stop=LIMITSTOP 查詢最后輸出項的檢索
–first=FIRSTCHAR 查詢第一個輸出字字符檢索
–last=LASTCHAR 查詢最后輸出字字符檢索
–sql-query=QUERY 要執行的SQL語句
–sql-shell 提示一個SQL shell
–sql-file=SQLFILE 從給定的文件執行SQL語句(S)
暴力破解:
這些選項可以用來運行蠻力測試
–common-tables 檢查常見表的存在性
–common-columns 檢查公共列的存在
用戶定義函數注入:
這些選項可用於創建自定義的用戶定義函數
–udf-inject 注入用戶自定義的函數
–shared-lib=SHLIB 共享庫的本地路徑
文件系統訪問:
這些選項可用於訪問后台數據庫管理系統的底層文件系統
–file-read=RFILE 從后台的數據庫管理系統文件系統中讀取一個文件
–file-write=WFILE 在后台的數據庫管理系統文件系統上寫一個本地文件
–file-dest=DFILE 后台數據庫的絕對路徑寫
操作系統訪問:
這些選項可用於訪問后台數據庫管理系統底層操作系統
–os-cmd=OSCMD 執行操作系統命令
–os-shell 用於交互式操作系統shell的提示
–os-pwn 顯示OOB shell, Meterpreter or或者VNC
–os-smbrelay One click prompt for an OOB shell, Meterpreter or VNC
–os-bof 存儲過程緩沖區溢出開發
–priv-esc 數據庫進程用戶權限升級
–msf-path=MSFPATH 本地路徑在metasploit框架安裝
–tmp-path=TMPPATH 臨時文件目錄的遠程絕對路徑
Windows注冊表訪問:
這些選項可用於訪問后台數據庫管理系統的注冊表
–reg-read 讀取一個窗口注冊表項
–reg-add 寫一個窗口注冊表項的數據
–reg-del 刪除一個注冊表項
–reg-key=REGKEY Windows注冊表
–reg-value=REGVAL 注冊表項的關鍵值
–reg-data=REGDATA 注冊表鍵值數據
–reg-type=REGTYPE 注冊表鍵值類型
常規:
這些選項可以用來設置一些常規的工作參數
-s SESSIONFILE 從存儲加載會話(sqlite)文件
-t TRAFFICFILE Log all HTTP traffic into a textual file
–batch Never ask for user input, use the default behaviour
–binary-fields=.. Result fields having binary values (e.g. “digest”)
–charset=CHARSET 用於數據檢索的力字符編碼
–crawl=CRAWLDEPTH 從目標網址開始抓取網站
–crawl-exclude=.. 正則表達式從爬行排除頁 (e.g. “logout”)
–csv-del=CSVDEL 限定使用CSV輸出特性 (default “,”)
–dump-format=DU.. 轉儲數據格式 (CSV (default), HTML or SQLITE)
–eta 顯示為每個輸出估計的到達時間
–flush-session 當前目標的刷新會話文件
–forms 目標網址的解析和測試形式
–fresh-queries 忽略存儲在會話文件中的查詢結果
–hex 使用數據庫管理系統的十六進制函數(S)進行數據檢索
–output-dir=OUT.. 自定義輸出目錄路徑
–parse-errors 解析和顯示響應中的數據庫管理系統錯誤消息
–save=SAVECONFIG 保存選項來配置INI文件
–scope=SCOPE 正則表達式過濾提供代理日志目標
–test-filter=TE.. 選擇測試的有效載荷和/或頭文件(e.g. ROW)
–test-skip=TEST.. 跳過試驗載荷和/或標題 (e.g. BENCHMARK)
–update 更新sqlmap
雜項:
-z MNEMONICS 短期記憶(e.g. “flu,bat,ban,tec=EU”)
–alert=ALERT 運行主機操作系統命令(s)時,SQL注入是發現
–answers=ANSWERS 漏洞答案集(e.g. “quit=N,follow=N”)
–beep 當有注入點被發現的時候報警
–cleanup 清理數據庫從sqlmap具體UDF和表
–dependencies 檢查沒有的(非核心)sqlmap依賴包
–disable-coloring 禁用控制台輸出着色
–gpage=GOOGLEPAGE 使用谷歌這一結果從指定的頁碼
–identify-waf 使一個WAF/IPS / IDS保護全面測試
–mobile 模仿智能手機通過HTTP用戶代理標頭
–offline 在脫機模式下工作(只使用會話數據)
–page-rank 顯示網頁排名(PR)為谷歌這一結果
–purge-output 安全地刪除輸出目錄中的所有內容
–skip-waf 跳過WAF/IPS / IDS保護啟發式檢測
–smart 只有積極的啟發式(S)進行徹底的測試
–sqlmap-shell 提示一個互動的sqlmap shell
–tmp-dir=TMPDIR 用於存儲臨時文件的本地目錄
–wizard 為初學者用戶提供簡單的向導界面
