sql注入
- 一,SQL注入分類
- 按照注入的網頁功能類型分類
- 按照注入點值的屬性分類
- 基于從服務器返回內容
- 按照注入的程度和順序
一,SQL注入分類
按照注入的網頁功能類型分類
- 登錄注入
- cms注入
cms邏輯:index.php首頁展示內容,具有文章列表(鏈接具有文章id),articles.php文章詳細頁,URL中article.php?id=文章id讀取id文章
按照注入點值的屬性分類
-
數字型注入
特征:參數直接用于數字比較或計算
示例SQL:SELECT * FROM products WHERE id = 1
判斷方法:
輸入1+1看是否返回id=2的結果
輸入1 AND 1=1和1 AND 1=2觀察響應差異
輸入1’看是否報錯 -
字符型注入
特征:參數被單引號/雙引號包裹
示例SQL:SELECT * FROM users WHERE username = ‘admin’
判斷方法:
輸入’看是否報錯
輸入admin’ AND ‘1’='1測試
觀察閉合符號(單引號/雙引號) -
搜索型注入
特征:參數用于LIKE模糊查詢
示例SQL:SELECT * FROM articles WHERE title LIKE ‘%keyword%’
判斷方法:
輸入%’ AND 1=1 AND ‘%’='測試
嘗試使用通配符%和_ -
排序型注入
特征:參數用于ORDER BY子句
示例SQL:SELECT * FROM products ORDER BY 1
判斷方法:
修改排序參數為(SELECT 1)
嘗試ASC/DESC后接注入語句
基于從服務器返回內容
-
顯錯型注入
特征:錯誤信息直接顯示在頁面上
判斷方法:
輸入特殊字符('、"、)等)觸發錯誤
觀察是否返回數據庫錯誤信息 -
盲注(無顯錯)
–布爾盲注:
通過頁面返回的真假狀態判斷
測試方法:AND 1=1/AND 1=2觀察響應差異
–時間盲注:
通過響應時間延遲判斷
測試方法:AND IF(1=1,SLEEP(5),0) -
聯合查詢注入
特征:可以使用UNION合并查詢結果
判斷方法:
測試ORDER BY確定列數
嘗試UNION SELECT 1,2,3
按照注入的程度和順序
- 一階注入
- 二階注入