SQL注入學習 檢測

2021-06-21 08:19:23 字數 1215 閱讀 8028

例項1的鏈結為:注:每個人機器上的可能不太一樣),從url中可以看出,引數為字串」root」,從表中返回一行資料,如下圖所示。

為了理解伺服器端**,我們需要對其進行探測。

1.     新增多餘字元。比如「1234」,使用?name=root1234,表中未顯示任何記錄。從這裡我們可以猜測,請求以某種匹配方式來使用我們的值。

2.     在請求中加入空格。使用?name=root+++(編碼後),結果正常顯示。進行比較時,mysql忽略字串後新增的空格。

3.     加入雙引號。使用?name=root」,表中未顯示結果。

4.     加入單引號。使用?name=root』,**消失,我們可能破壞了某些東西。

從上面我們可以推測,請求很有可能如下面所示:

select* from users where name=』[input]』

現在對假設進行驗證

若假設是對的,以下注入應該會返回相同的結果:

1.?name=root』and 『1』=』1』 #(需要對#進行編碼,%23):原來的查詢語句中的引號被注釋掉了。

2.?name=root』and 1=1 #(需要對#進行編碼,%23):原來查詢語句中的引號被注釋掉,並且我們不需要』1』=』1』中的單引號。

3.?name=root』 #(需要對#進行編碼):原查詢語句中的引號被注釋掉,且不需要1=1。

下面這些請求可能會返回不同的值。

1.?name=root』and 『1』=』0:原查詢語句中的單引號和使用者輸入字串中最後乙個單引號閉合。網頁中不會返回任何結果,因為選擇條件總是返回false.

2.?name=root』and 『1』=』1 #(對#進行編碼):原始查詢語句中的引號被注釋掉。返回結果和上面的相同。

3.?name=root』or 『1』=』1:原始語句中的單引號與使用者注入字串中最後乙個單引號閉合。由於or語句的第二部分總是返回true,將會選擇所有的結果,將所有條目顯示到**中,如圖所示。

4.?name=root』or 『1』=』1』 #(對#進行編碼):原始查詢語句中的引號被注釋掉,返回結果與上個請求相同。

通過所有這些測試,我們可以確定存在sql注入。

SQL注入學習

通常情況下,可能存在 sql 注入漏洞的 url 是類似這種形式 對 sql 注入的判斷,主要有兩個方面 可能存在 sql 注入攻擊的 asp php jsp 動態網頁中,乙個動態網頁中可能只有乙個引數,有時可能有多個引數。有時是整型引數,有時是字串型引數,不能一概而論。總之只要是帶有引數的 動態網...

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...