SQL注入漏洞——sql盲注
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
1.什么是盲注? 在SQL注入過程中,SQL語句執(zhí)行查詢后,查詢的數(shù)據(jù)不能回顯到前端頁面中,而是需要使用一些特殊的方式來判斷,這個(gè)過程稱之為盲注 盲注分為三類: 布爾盲注 相較于顯錯(cuò)注入,反應(yīng)會(huì)更隱晦,比如當(dāng)執(zhí)行的惡意語句條件為False時(shí)(如and 1=2),頁面會(huì)變得異常,如頁面突然沒了數(shù)據(jù),當(dāng)條件為True時(shí),頁面又會(huì)恢復(fù)正常。并不會(huì)看到像顯錯(cuò)注入那樣明顯的語句回顯,這樣的注入,我們就可以規(guī)定為布爾盲注 延時(shí)(時(shí)間)盲注 不管你輸入什么,頁面都還是那個(gè)頁面,不會(huì)發(fā)生變化。這個(gè)時(shí)候就要用到延時(shí)注入的語句,通過頁面的響應(yīng)時(shí)間判斷條件是否成立,如:如果條件成立則頁面10秒后在響應(yīng),條件不成立則正常響應(yīng)。 報(bào)錯(cuò)盲注 報(bào)錯(cuò)注入就是利用了數(shù)據(jù)庫的某些機(jī)制,人為地制造錯(cuò)誤條件,使得查詢結(jié)果能夠出現(xiàn)在錯(cuò)誤信息中。報(bào)錯(cuò)注入的前提就是頁面上可以沒有回顯點(diǎn),但是必須有sql語句執(zhí)行錯(cuò)誤的信息 2.靶場(chǎng)案例講解 函數(shù)參考: if(條件,5,0) #條件成立 返回5 反之 返回0 sleep(5) #SQL語句延時(shí)執(zhí)行5秒 substr(a,b,c) #從位置b開始,截取字符串a(chǎn)的c長(zhǎng)度 left(database(),1) #left(a,b)從左側(cè)截取a的前b位 length(database())=8 #判斷數(shù)據(jù)庫database()名的長(zhǎng)度 布爾盲注——sqli-labs第八關(guān) 輸入?id=1’之后頁面產(chǎn)生錯(cuò)誤且沒有錯(cuò)誤回顯,可以判斷為字符型注入,可以使用布爾盲注 爆數(shù)據(jù)庫名 1.判斷長(zhǎng)度 數(shù)據(jù)庫名稱長(zhǎng)度等于7的時(shí)候頁面錯(cuò)誤,等于8的時(shí)候頁面正常,說明數(shù)據(jù)庫名稱長(zhǎng)度為8 還可以使用“>”,“<”判斷 2.爆破數(shù)據(jù)庫名稱 輸入?id=1′ and left(database(),1)=’a’–+時(shí)頁面發(fā)生錯(cuò)誤,輸入?id=1′ and left(database(),1)=’s’–+時(shí)頁面正常,說明數(shù)據(jù)庫名稱第一位為’s’。再次?id=1′ and left(database(),2)=’e’–+即可爆破第二位,依次爆破,爆破到第八位成功爆出完整數(shù)據(jù)庫名稱。 完整數(shù)據(jù)庫名稱為:’security‘ 也可以使用substr函數(shù)爆破,道理是一樣的。 延時(shí)盲注——sqli-labs第9關(guān) 第九關(guān)會(huì)發(fā)現(xiàn)我們不管輸入什么頁面顯示的東西都是一樣的。如果頁面一直不變這個(gè)時(shí)候我們可以使用時(shí)間注入,時(shí)間注入和布爾盲注兩種沒有多大差別只不過時(shí)間盲注多了if函數(shù)和sleep()函數(shù)。if(a,sleep(10),1)意思是如果a條件成立,那么執(zhí)行sleep(10)頁面延遲10秒,如果a條件不成立,執(zhí)行1,頁面不延遲。 因?yàn)橛星罢卟紶柮ぷ⒌匿亯|,基本知識(shí)點(diǎn)都已經(jīng)提到了,所以直接開搞 輸入?id=1′ and if(1=1,sleep(5),1)–+時(shí)頁面延遲了五秒返回?cái)?shù)據(jù),所以是單引號(hào)字符型注入 1.判斷長(zhǎng)度 輸入:?id=1’and if(length(database())=7,sleep(5),1)–+ 意思是如果數(shù)據(jù)庫長(zhǎng)度為7,頁面就延時(shí)五秒響應(yīng)數(shù)據(jù),否則,就馬上返回?cái)?shù)據(jù)。 而頁面立馬就返回了數(shù)據(jù),說明數(shù)據(jù)庫名稱長(zhǎng)度不等于7,而我們輸入:?id=1’and if(length(database())=8,sleep(5),1)–+頁面延時(shí)了五秒返回?cái)?shù)據(jù),數(shù)據(jù)庫名稱長(zhǎng)度為:8 延時(shí)五秒 2.爆破數(shù)據(jù)庫名稱 輸入:?id=1′ and if(substr(database(),1,1)=’s’,sleep(5),1)–+(意思是:如果當(dāng)前庫名從左邊第一位開始截取的一個(gè)字符是’s’,就延時(shí)5秒返回?cái)?shù)據(jù),否則,就馬上返回?cái)?shù)據(jù)。),頁面延時(shí)了五秒才返回?cái)?shù)據(jù),說明數(shù)據(jù)庫名稱第一位是”s“. 依次猜測(cè),當(dāng)輸入:?id=1′ and if(substr(database(),1,8)=’security’,sleep(5),1)–+(意思是:如果當(dāng)前庫名從左邊第一位開始截取的8個(gè)字符是’security’,就延時(shí)5秒返回?cái)?shù)據(jù),否則,就馬上返回?cái)?shù)據(jù)。),頁面延時(shí)了五秒返回?cái)?shù)據(jù)。 數(shù)據(jù)庫名稱:“security” 該文章在 2024/1/22 8:42:40 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |