1)前提
1, 前端傳入後端的引數是使用者可控的;
2, 傳入的引數拼接到sql語句,且帶入資料庫查詢。
2)成因
由於web應用程式對使用者輸入的資料的合法性沒有判斷,使用者通過可控引數中注入sql語句,破壞原有sql結構,達到編寫程式時意料之外結果的攻擊行為,
成因歸結為兩個:
1、程式編寫者在處理程式和資料庫互動時,使用字串拼接的方式構造sql語句。
2、未對使用者可控引數進行足夠的過濾便將引數內容拼接進入到sql語句中。
1)數字型注入
輸入引數為整型時,如id、年齡和頁碼等;
數字型例句如下
select * from table where id = 8
1)字元型注入
輸入引數為字串型時,如姓名、職業、住址等;
字元型例句如下
select * from table where name =』admin』
兩者最大的區別:字元型注入一般要使用單引號進行閉合,而數字型注入則不需要。
get注入:注入字元在url引數中;
post注入:注入欄位在post提交的資料中;
cookie注入:注入欄位在cookie資料中,**使用通用的防注入程式,會對get、post提交的資料進行過濾,卻往往遺漏cookie中的資料進行過濾。
其他注入:http請求的其他內容觸發的sql注入漏洞;
明注入:也稱報錯注入,會在資料庫報錯時在頁面顯示出具體的報錯內容。
盲注入:盲注入不會展現任何資料庫報錯內容,它是依據構造真或假的問題對資料庫進行「提問」,注入方式主要有兩種:基於布林值與基於時間。
1)布林值
如在mysql中判斷資料名長度的輸入為1』 and length(database()) = 10 #,通過相應的正確與否判斷資料名的長度是否為10,猜測資料庫中資料的具體內容時,可以借助substr、limit、ascii等一些特殊的命令及函式進行猜測;
2)基於時間
基於時間的sql盲注入方式通常是在sql語句中新增延時函式,依據相應時間來判斷是否存在sql注入,常用的延時函式或指令有sleep、repeat等。
總結:盲注入提交sql命令較多,通常通過手工方式無法完成,借用工具如sqlmap。
3)其他型別
延時注入:使用延時函式方式;
搜尋注入:注入點在搜尋框中;
編碼注入:將輸入的字串進行編碼,如base64編碼;
堆查詢注入:同時執行多條語句;
聯合查詢注入:使用union操作碼合併兩條或多條sql語句;
多階注入:由多個http請求響應共同完成的注入;
1, 洩露資料庫敏感資訊;
2, 惡意的篡改網頁;
3, 寫入**後門。伺服器被遠端控制;
4, 破壞硬碟資料、使系統癱瘓。
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語句得到乙個存在安全漏洞的 上的資料庫,而...