SQL注入分類

**SQL全稱是Structured Query Language**

是一種結構化的查詢語言,用於與數據庫進行交互並能夠被數據庫解析。SQL注入攻擊是一種常見的注入攻擊類型。攻擊方式在用戶與程序進行交互時發生的。如在表單輸入、搜索框輸入功能中插入SQL命令,然後發送到服務端。服務端對數據進行了解析執行,並執行了一些非預期的操作。

 

**按照注入點類型來分類**

 

**(1)數字型注入點**

 

在 Web 端大概是 `http://xxx.com/news.php?id=1` 這種形式,其注入點 `id` 類型爲`數字`,所以叫數字型注入點。

這一類的 SQL 語句原型大概爲 `select * from 表名 where id=1`。

組合出來的sql注入語句爲:`select * from news where id=1 and 1=1`

 

> eg:http://www.xxx.com/news.php?id=1===>http://www.xxx.com/news.php?id=1 and 1=1

 

**(2)字符型注入點**

 

在 Web 端大概是 `http://xxx.com/news.php?name=admin` 這種形式,其注入點 `name` 類型爲`字符類型`,所以叫字符型注入點。

這一類的 SQL 語句原型大概爲 `select * from 表名 where name='admin'`注意多了引號。

組合出來的sql注入語句爲:`select * from news where chr='admin' and 1=1 ' '`閉合單引號

 

    chr='admin' union select 1,2,3,4 and '1'='1   ====>  chr='admin'(閉合前面單引號) union select 1,2,3,4 and '1'='1'

 

判斷字符型漏洞的 SQL 注入點:

 

① 還是先輸入單引號 `admin'` 來測試

SQL 語句就會變爲:`SELECT * FROM table WHERE username = 'admin''`

頁面異常。

 

② 輸入:`admin' and 1 = 1 --`

注意:在 admin 後有一個單引號 ',用於字符串閉合,最後還有一個註釋符 --

SQL 語句變爲:`SELECT * FROM table WHERE username = 'admin' and 1 = 1 --`

頁面顯示正確。

 

③ 輸入:`admin' and 1 = 2 --`

SQL 語句變爲:`SELECT * FROM table WHERE username = 'admin' and 1 = 2 --`

頁面錯誤。

 

滿足上面三個步驟則有可能存在字符型 SQL 注入。

 

> eg:http://www.xxx.com/news.php?name=admin ===>http://www.xxx.com/news.php?name='admin' and 1=1 ' '

 

**(3)搜索型注入點**

 

這是一類特殊的注入類型。這類注入主要是指在進行數據搜索時沒過濾搜索參數,一般在鏈接地址中有`“keyword=關鍵字”`,有的不顯示在的鏈接地址裏面,而是直接通過搜索框表單提交。此類注入點提交的 SQL 語句,其原形大致爲:`select * from 表名 where 字段 like '%關鍵字%'。`

 

組合出來的sql注入語句爲:`select * from news where search like '%關鍵字%' and '%1%'='%1%'`

 

測試可以用`%' union select 1,2,3,4 and '%'='`這個語句

 

>  eg: http://www.xxx.com/keyword=xxx`====>http://www.xxx.com/keyword=xxx%' union select 1,2,3,4 and '%'='

 

 

**按照數據提交的方式來分類**

 

**(1)GET 注入**

 

提交數據的方式是 GET , 注入點的位置在 GET 參數部分。比如有這樣的一個鏈接http://xxx.com/news.php?id=1 , id 是注入點。

 

**(2)POST 注入**

 

使用 POST 方式提交數據,注入點位置在 POST 數據部分,常發生在表單中。

 

**(3)Cookie 注入**

 

HTTP 請求的時候會帶上客戶端的 Cookie, 注入點存在 Cookie 當中的某個字段中。

 

**(4)HTTP 頭部注入**

 

注入點在 HTTP 請求頭部的某個字段中。比如存在 User-Agent 字段中。嚴格講的話,Cookie 其實應該也是算頭部注入的一種形式。因爲在 HTTP 請求的時候,Cookie 是頭部的一個字段。

 

**按照執行效果來分類**

 

**(1)基於布爾的盲注,**即可以根據返回頁面判斷條件真假的注入。

 

**(2)基於時間的盲注**,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。

 

**(3)基於報錯注入,**即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中。

 

**(4)聯合查詢注入,**可以使用union的情況下的注入。

 

**(5)堆查詢注入,**可以同時執行多條語句的執行時的注入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章