往往大多數(shù)人在學(xué)習(xí)sql注入的時(shí)候,很多的人都是不去弄清楚原理,去網(wǎng)上隨意搜索一些注入語(yǔ)句,就開(kāi)始對(duì)靶機(jī)注入,雖然能注入成功,但是不清楚原理,對(duì)以后的學(xué)習(xí)和工作沒(méi)有多大的好處。特別是一些新手!
現(xiàn)在我就講一下“SQL普通注入和SQL盲注的區(qū)別”:
什么是SQL盲注?
盲注就是在sql注入過(guò)程中,sql語(yǔ)句執(zhí)行的選擇后,選擇的數(shù)據(jù)不能回顯到前端頁(yè)面。此時(shí),我們需要利用一些方法進(jìn)行判斷或者嘗試,這個(gè)過(guò)程稱之為盲注。
什么是SQL普通注入?
SQL普通注入也可以叫SQL顯錯(cuò)式注入,因?yàn)槲覀兛梢愿鶕?jù)報(bào)錯(cuò)從而達(dá)到進(jìn)入注入的正軌。
SQL盲注與普通注入的區(qū)別
我這里拿兩個(gè)靶機(jī)來(lái)講一下SQL盲注與SQL普通注入的區(qū)別吧!
第一個(gè)靶機(jī):DVWA
1、當(dāng)打開(kāi)“http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#”
我們提交1發(fā)現(xiàn)返回有兩列 。
我們?cè)佥斎?'發(fā)現(xiàn)了報(bào)錯(cuò)如下:
這種為顯錯(cuò)式注入,我們可以根據(jù)它報(bào)的錯(cuò)誤走入正軌,這報(bào)的錯(cuò)誤為“附近有語(yǔ)法錯(cuò)誤,我們可以確定這是一個(gè)字符型注入”我們可以直接把它的數(shù)據(jù)庫(kù)給返回出來(lái)。例如:輸入1' union select 1, database()#
但是:SQL盲注就不能把數(shù)據(jù)庫(kù)給返回出來(lái),我們只能一點(diǎn)一點(diǎn)的猜測(cè)。
2、例如:我們打開(kāi)“http://127.0.0.1/dvwa/vulnerabilities/sqli_blind/”,我再輸入1' union select 1, database()#,數(shù)據(jù)庫(kù)是報(bào)不出來(lái)的。
第二個(gè)靶機(jī):Mutillidae
1、瀏覽器打開(kāi)“http://127.0.0.1/mutillidae/index.php?page=user-info.php”,這里我是選擇用戶名框輸入一個(gè)“\”,點(diǎn)擊確認(rèn)鍵,可以看到報(bào)錯(cuò)信息,并且可以看到SQL語(yǔ)句,說(shuō)明存在SQL注入,此處無(wú)過(guò)濾。這就是SQL普通注入,也可以叫SQL顯錯(cuò)注入。
選擇在用戶名輸入處輸入“‘ or 1=1 #”,通過(guò)使用“or”字句將輸入匹配取消,并使用“#”將后續(xù)語(yǔ)句中對(duì)password的查詢給注釋掉,即查詢時(shí)的SQL語(yǔ)句變?yōu)榱耍?/p>
SELECT * FROM account WHERE username=’’or 1=1
使用這個(gè)SQL語(yǔ)句,即可將account表中所有的用戶信息查詢出來(lái)。點(diǎn)擊確認(rèn)后,可以看到下方出現(xiàn)所有的用戶信息:
2、由于Mutillidae里面的盲注不是很準(zhǔn)確,我就不演示了。大家只要能懂了即可!
Mutillidae里面的盲注也能報(bào)錯(cuò)也能查詢出結(jié)果,普通注入和盲注示例都是用的同一個(gè)PHP文件。