SQL注入漏洞小結

2021-10-25 12:09:36 字數 1381 閱讀 8352

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語句得到乙個存在安全漏洞的 上的資料庫,而...