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

SQL 注入漏洞全接觸 進階篇 (二):長度探測、常用函數與中文處理

     編輯:關於SqlServer

接續基礎篇,深入講解盲注中如何高效探測欄位長度、各資料庫常用注入函數對照、中文字元處理技巧。

一、高效探測欄位長度

已知 Admin 表有 username 欄位,先取第一筆記錄測試長度:

https://www.19cn.com/showdetail.asp?id=49 AND (SELECT TOP 1 LEN(username) FROM Admin) > 0

原理:條件成立頁面正常,不成立則異常。使用二分法或指數法快速逼近:>7 成立、>8 不成立 → 長度 = 8。程式化自動化可大幅提速。

再逐位截取 ASCII:

id=49 AND (SELECT TOP 1 ASC(MID(username,1,1)) FROM Admin) > 0

同理二分法猜解每位 ASCII 碼,英數範圍 1-128。

二、SQL 注入常用函數對照表

功能AccessSQL Server
取字元 ASCIIASC(字元)UNICODE(字元)
ASCII 轉字元CHR(數字)NCHAR(數字)
子字串截取MID(字串,起始,長度)SUBSTRING(字串,起始,長度)
絕對值ABS(數字)ABS(數字)
範圍判斷A BETWEEN B AND CA BETWEEN B AND C

熟練掌握函數差異是跨資料庫注入測試的關鍵。

三、中文字元處理

  • Access:中文 ASC() 可能回傳負數,用 ABS() 取絕對值,字元不變。
  • SQL Server:中文為 Unicode 雙位元編碼,ASCII() 無效,必須用 UNICODE() 取碼值,NCHAR() 還原字元。

除函數不同、猜解範圍較大 (雙位元) 外,邏輯與英數完全一致。克服「中文恐懼症」關鍵在於理解編碼差異並選對函數。

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