SQL注入學習

2021-10-10 14:37:07 字數 1910 閱讀 4129

通常情況下,可能存在 sql 注入漏洞的 url 是類似這種形式 :

對 sql 注入的判斷,主要有兩個方面:

可能存在 sql 注入攻擊的 asp/php/jsp 動態網頁中,乙個動態網頁中可能只有乙個引數,有時可能有多個引數。有時是整型引數,有時是字串型引數,不能一概而論。總之只要是帶有引數的 動態網頁且此網頁訪問了資料庫,那麼就有可能存在 sql 注入。如果程式設計師沒有足夠的安全意識,沒有進行必要的字元過濾,存在sql注入的可能性就非常大。

最為經典的單引號判斷法

在引數後面加上單引號,比如:

1'如果頁面返回錯誤,則存在 sql 注入。

原因是無論字元型還是整型都會因為單引號個數不匹配而報錯。

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

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

數字型判斷:

原因如下:

當輸入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 的邏輯判斷,所以不會出現以上結果,故假設是不成立的。

4.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注入學習

2018 02 03 grant 授權語句 revoke 取消許可權 get 方式url的後面可以跟上?query語句 post方式可以上傳檔案或表單 cookie 需要關注的注入點 構造語句 admin or 1 1 回顯 使用union聯合語句 正常可執行 不正常會報錯 不回顯的叫盲注 whal...

關於SQL注入學習

知道sql injection 但是平時懶的去做這方面的東西,以後一定還得注意 net的專案看來要用儲存過程和分層方式來寫了 sql injection 講解 方法 網上蒐集 1.帶引數的的儲存過程來完成使用者驗證的過程 2.使用者通過 提交過來的變數引數進行檢查的 發現客戶端提交的引數中有 exe...

SQL注入學習 檢測

例項1的鏈結為 注 每個人機器上的可能不太一樣 從url中可以看出,引數為字串 root 從表中返回一行資料,如下圖所示。為了理解伺服器端 我們需要對其進行探測。1.新增多餘字元。比如 1234 使用?name root1234,表中未顯示任何記錄。從這裡我們可以猜測,請求以某種匹配方式來使用我們的...