首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 注入攻擊全接觸:入門篇 (二) - 精準判斷注入點與資料庫類型識別

     編輯:關於SqlServer

經典判斷法:1=1 / 1=2 布林測試

單引號測試不可靠(易誤判、易被過濾)。標準判斷流程:

  1. https://site/show.asp?id=49 → 正常顯示(基準)。
  2. ...id=49 AND 1=1 → **正常顯示,內容與基準一致**(條件恆真,邏輯未變)。
  3. ...id=49 AND 1=2 → **異常**:BOF/EOF 錯誤、查無記錄、內容為空(條件恆假,查詢無結果)。

**符合上述三特徵 → 確定存在數值型注入點。**

不可注入特徵:1=1、1=2 均觸發程式自訂錯誤或型別轉換錯誤。

此法僅適用數值型參數。字串型、搜尋型參數判斷邏輯不同(詳見進階篇)。

第三節:識別資料庫類型 - Access vs SQL Server

ASP 主流搭配 Access 或 SQL Server(佔比 99%+)。識別方法:

方法一:錯誤回顯法(需 IIS 開啟詳細錯誤)

...id=49 AND USER>0
  • SQL Server: USER 為系統變數(NVARCHAR),與 INT 比較報錯,錯誤訊息直接洩露用戶名(如 dbo 即 sa)。
  • Access: 無 USER 變數,報語法錯誤或無反應。

方法二:系統表探測法(通用,無需錯誤回顯)

兩資料庫系統表差異:

  • SQL Server:SYSOBJECTS(Web 環境可讀)。
  • Access:MSYSOBJECTS(Web 環境通常無權限讀取)。

執行兩條測試:

...id=49 AND (SELECT COUNT(*) FROM SYSOBJECTS)>0
...id=49 AND (SELECT COUNT(*) FROM MSYSOBJECTS)>0
資料庫SYSOBJECTS 測試MSYSOBJECTS 測試
SQL Server頁面正常(條件真)頁面異常/報錯(表不存在)
Access頁面異常(表不存在)頁面異常(無權限/不存在)

**首條測試通常即可確定類型**,次條作驗證。掌握此法,盲注環境也能精準識別目標。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved