溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

sql注入的原理是什么

發(fā)布時(shí)間:2021-05-14 10:43:02 來(lái)源:億速云 閱讀:1168 作者:小新 欄目:數(shù)據(jù)庫(kù)

這篇文章主要介紹了sql注入的原理是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1. 首先了解SQL注入的原理:

  SQL Injection:就是通過(guò)把SQL命令插入到Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。

  具體來(lái)說(shuō),它是利用現(xiàn)有應(yīng)用程序,將(惡意的)SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的能力,它可以通過(guò)在Web表單中輸入(惡意)SQL語(yǔ)句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫(kù),而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語(yǔ)句。比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過(guò)WEB表單遞交查詢(xún)字符暴出的,這類(lèi)表單特別容易受到SQL注入式攻擊.(來(lái)源于百度)

  也就是說(shuō)網(wǎng)站頁(yè)面包含與數(shù)據(jù)庫(kù)交互的部分(例如新聞網(wǎng)站的查找功能),而當(dāng)在網(wǎng)站輸入數(shù)據(jù)信息,數(shù)據(jù)信息被程序化后傳入數(shù)據(jù)庫(kù)執(zhí)行的過(guò)程中,網(wǎng)站的開(kāi)發(fā)人員沒(méi)有對(duì)這些傳入數(shù)據(jù)庫(kù)的相應(yīng)數(shù)據(jù)做安全處理(比如過(guò)濾特殊字符、編碼等),導(dǎo)致黑客可以將惡意代碼(也就是包含非法SQL語(yǔ)句的SQL命令)通過(guò)網(wǎng)站前段傳入數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)中執(zhí)行這些具有黑客目的的SQL語(yǔ)句,從而造成數(shù)據(jù)庫(kù)信息泄露、損壞等后果。

2. SQL注入的一般分類(lèi)

按照注入點(diǎn)類(lèi)型來(lái)分類(lèi)

(1)數(shù)字型注入點(diǎn)

  許多網(wǎng)頁(yè)鏈接有類(lèi)似的結(jié)構(gòu) http://www.example.com/12.php?id=1 基于此種形式的注入,一般被叫做數(shù)字型注入點(diǎn),緣由是其注入點(diǎn) id 類(lèi)型為數(shù)字,在大多數(shù)的網(wǎng)頁(yè)中,諸如 查看用戶(hù)個(gè)人信息,查看文章等,大都會(huì)使用這種形式的結(jié)構(gòu)傳遞id等信息,交給后端,查詢(xún)出數(shù)據(jù)庫(kù)中對(duì)應(yīng)的信息,返回給前臺(tái)。這一類(lèi)的 SQL 語(yǔ)句原型大概為 select * from 表名 where id=1 若存在注入,我們可以構(gòu)造出類(lèi)似與如下的sql注入語(yǔ)句進(jìn)行爆破:select * from 表名 where id=1 and 1=1

(2)字符型注入點(diǎn)

  網(wǎng)頁(yè)鏈接有類(lèi)似的結(jié)構(gòu) http://xwww.example.com/users.php?user=admin 這種形式,其注入點(diǎn) user 類(lèi)型為字符類(lèi)型,所以叫字符型注入點(diǎn)。這一類(lèi)的 SQL 語(yǔ)句原型大概為 select * from 表名 where user='admin' 值得注意的是這里相比于數(shù)字型注入類(lèi)型的sql語(yǔ)句原型多了引號(hào),可以是單引號(hào)或者是雙引號(hào)。若存在注入,我們可以構(gòu)造出類(lèi)似與如下的sql注入語(yǔ)句進(jìn)行爆破:select * from 表名 where user='admin' and 1=1 ' 我們需要將這些煩人的引號(hào)給處理掉。

(3)搜索型注入點(diǎn)

   這是一類(lèi)特殊的注入類(lèi)型。這類(lèi)注入主要是指在進(jìn)行數(shù)據(jù)搜索時(shí)沒(méi)過(guò)濾搜索參數(shù),一般在鏈接地址中有 "keyword=關(guān)鍵字" 有的不顯示在的鏈接地址里面,而是直接通過(guò)搜索框表單提交。此類(lèi)注入點(diǎn)提交的 SQL 語(yǔ)句,其原形大致為:select * from 表名 where 字段 like '%關(guān)鍵字%' 若存在注入,我們可以構(gòu)造出類(lèi)似與如下的sql注入語(yǔ)句進(jìn)行爆破:select * from 表名 where 字段 like '%測(cè)試%' and '%1%'='%1%'

3. 如可判斷是否存在SQL注入(小白總結(jié),僅供參考)

簡(jiǎn)單點(diǎn)講就是:

   所有的輸入只要和數(shù)據(jù)庫(kù)進(jìn)行交互的,都有可能觸發(fā)SQL注入

  SQL注入按照數(shù)據(jù)提交的方式可分為:

  (1)GET 注入:提交數(shù)據(jù)的方式是 GET , 注入點(diǎn)的位置在 GET 參數(shù)部分。比如有這樣的一個(gè)鏈接http://xxx.com/news.php?id=1 , id 是注入點(diǎn)。

  (2)POST 注入:使用 POST 方式提交數(shù)據(jù),注入點(diǎn)位置在 POST 數(shù)據(jù)部分,常發(fā)生在表單中。

  (3)Cookie 注入:HTTP 請(qǐng)求的時(shí)候會(huì)帶上客戶(hù)端的 Cookie, 注入點(diǎn)存在 Cookie 當(dāng)中的某個(gè)字段中。

  (4)HTTP 頭部注入:注入點(diǎn)在 HTTP 請(qǐng)求頭部的某個(gè)字段中。比如存在 User-Agent 字段中。嚴(yán)格講的話(huà),Cookie 其實(shí)應(yīng)該也是算頭部注入的一種形式。因?yàn)樵?HTTP 請(qǐng)求的時(shí)候,Cookie 是頭部的一個(gè)字段。

   根據(jù)提交方式分類(lèi)后,你會(huì)發(fā)現(xiàn)SQL注入最長(zhǎng)發(fā)生的位置在鏈接地址、數(shù)據(jù)參數(shù)、cookie信息以及HTTP請(qǐng)求頭等位置。

  了解了可能存在SQL注入的位置,然后我們需要判斷在這些位置上是否能夠觸發(fā)SQL注入,最簡(jiǎn)單的方式就是在相應(yīng)位置輸入and 1=1 (以及and 1=1 的變換形式)來(lái)判斷。對(duì)于不同的注入點(diǎn)類(lèi)型,比如字符型需要適當(dāng)添加單引號(hào),而對(duì)于數(shù)字型的注入點(diǎn)則不需要。

4. SQL注入的高級(jí)分類(lèi)(按照?qǐng)?zhí)行效果分類(lèi))

 ?。?)基于布爾的盲注:即可以根據(jù)返回頁(yè)面判斷條件真假的注入。

  (2)基于時(shí)間的盲注:即不能根據(jù)頁(yè)面返回內(nèi)容判斷任何信息,用條件語(yǔ)句查看時(shí)間延遲語(yǔ)句是否執(zhí)行(即頁(yè)面返回時(shí)間是否增加)來(lái)判斷。

 ?。?)基于報(bào)錯(cuò)注入:即頁(yè)面會(huì)返回錯(cuò)誤信息,或者把注入的語(yǔ)句的結(jié)果直接返回在頁(yè)面中。

  (4)聯(lián)合查詢(xún)注入:可以使用union的情況下的注入。

  (5)堆查詢(xún)注入:可以同時(shí)執(zhí)行多條語(yǔ)句的注入。

 ?。?)寬字節(jié)注入:利用gbk是多字節(jié)的編碼,兩個(gè)字節(jié)代表一個(gè)漢字

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“sql注入的原理是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI