通常 sql 注入漏洞分為 2 種型別:
其實所有的型別都是根據資料庫本身表的型別所產生的,在我們建立表的時候會發現其後總有個資料型別的限制,而不同的資料庫又有不同的資料型別,但是無論怎麼分常用的查詢資料型別總是以數字與字元來區分的,所以就會產生注入點為何種型別。
5.2.1 數字型判斷:
當輸入的參 x 為整型時,通常 abc.php 中 sql 語句型別大致如下:
select * from 《表名》 where id = x
這種型別可以使用經典的and 1=1
和and 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'='1
和and '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語句得到乙個存在安全漏洞的 上的資料庫,而...