判斷sql注入漏洞的型別

2021-08-07 22:45:08 字數 1694 閱讀 9517

通常 sql 注入漏洞分為 2 種型別:

其實所有的型別都是根據資料庫本身表的型別所產生的,在我們建立表的時候會發現其後總有個資料型別的限制,而不同的資料庫又有不同的資料型別,但是無論怎麼分常用的查詢資料型別總是以數字與字元來區分的,所以就會產生注入點為何種型別。

5.2.1 數字型判斷:

當輸入的參 x 為整型時,通常 abc.php 中 sql 語句型別大致如下:

select * from 《表名》 where id = x

這種型別可以使用經典的and 1=1and 1=2來判斷:

url 位址中繼續輸入http://***/abc.php?id= x and 1=2頁面執行錯誤,則說明此 sql 注入為數字型注入。

原因如下:

當輸入and 1=1時,後台執行 sql 語句:

select * from

《表名》 where

id = x and

1=1

沒有語法錯誤且邏輯判斷為正確,所以返回正常。

當輸入and 1=2時,後台執行 sql 語句:

select * from

《表名》 where

id = x and

1=2

沒有語法錯誤但是邏輯判斷為假,所以返回錯誤。

我們再使用假設法:如果這是字元型注入的話,我們輸入以上語句之後應該出現如下情況:

select * from

《表名》 where

id = 'x and 1=1'

select * from

《表名》 where

id = 'x and 1=2'

查詢語句將 and 語句全部轉換為了字串,並沒有進行 and 的邏輯判斷,所以不會出現以上結果,故假設是不成立的。

5.2.2 字元型判斷:

當輸入的參 x 為字元型時,通常 abc.php 中 sql 語句型別大致如下:

select * from 《表名》 where id = 'x'

這種型別我們同樣可以使用and '1'='1and '1'='2來判斷:

url 位址中繼續輸入http://***/abc.php?id= x' and '1'='2頁面執行錯誤,則說明此 sql 注入為字元型注入。

原因如下:

當輸入and '1'='1時,後台執行 sql 語句:

select * from

《表名》 where

id = 'x'

and'1'='1'

語法正確,邏輯判斷正確,所以返回正確。

當輸入and '1'='2時,後台執行 sql 語句:

select * from

《表名》 where

id = 'x'

and'1'='2'

語法正確,但邏輯判斷錯誤,所以返回正確。同學們同樣可以使用假設法來驗證。

SQL注入漏洞

sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...

SQL注入漏洞

sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...

sql注入漏洞

什麼是sql注入 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通俗地講,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而...