sql_1-2_get基于盲注
sql_1-2_get基于盲注(時間,和布爾)
一 . 盲注的概念和類型
1.概念
sql(盲注)是注入攻擊的一種,向數據庫發生true或false這樣的問題,并且根據應用程序返回的信息判斷結果,這種攻擊的出現是因為應用程序配置為只顯示代碼問題。
當攻擊者利用sql注入漏洞進行攻擊時,有時候web應用程序會顯示,后端sql查詢的返回錯誤信息。bind sql(盲注)與常規的注入很接近,不同的是數據庫返回數據檢索方式,若數據庫沒有輸出到web頁面,攻擊者會詢問一先列的true和false問題,強制從數據庫獲取數據
2.類型 盲注常分為:基于布爾型的盲注和基于時間的盲注 基于時間:常使用睡眠的sql語句手段,探測出存在時間注入 基于布爾:常使用SQL語句探測數據庫名的長度,推測,并且猜測出數據庫名,及銘感信息
可以觀察一下源代碼, 如果輸入變量正確則返回為頁面 如果輸入錯誤則返回為空(典型的盲注)
二. 基于時間的盲注
1.我們通過以下三張圖(符號手段)發現并沒報錯,則我們猜想他是盲注(并且是基于時間的盲注)
2.ascii編碼
先來了解一下基于時間的語句
if語句判斷是否等于115,如果等于115就睡眠三秒鐘(當數據庫名的第一個字母的ascii編碼等于115時,睡眠3秒鐘)
substr(database(),1,1)的意思是,取數據庫名時,首先從第一個取到第一個。 如果1,1等于1,2,就是從第一個取到第二個
簡單的說就是判斷數據庫名第一個字母的ascii碼是否等于115,如果是,就睡眠3秒鐘,如果成功睡眠,則代表存在盲注
3.時間盲注實操
從以下兩張圖可以看到,加時間注入后響應時間不同
由于頁面卡頓,所以回顯不怎么好。
總之就是注入睡眠攻擊以后,觀察響應時間,如果響應時間有一定差距,也就可以證明存在sql盲注(時間)
三. 基于布爾的盲注
1.基于布爾的盲注推測
基于布爾的盲注和時間的盲注類似,區別在于沒有使用睡眠,而是直接推測數據庫的長度或名字。
如圖,我們通過數據庫查詢表得出了:
當猜測數據庫名長為8時,MySQL返回正常
當猜測數據庫名長為9時,mysql返回空
同樣道理,觀察下面兩張圖,我們將語句拼接到url中,
通過回顯可以明顯的觀察到
當database()等于8時,返回正常
databas()等于9時,返回錯誤,由此推斷,我們的sql成功注入,也可以證明存在布爾盲注
四. 使用sqlmap利用盲注漏洞
1.使用sqlmap -h 查看幫助信息
找到 --technique=TECH
此語法是可以使用基于T時間的盲注,E錯誤的注入,B布爾注入
默認用了很多鐘探測技術
但是如果使用默認利用會很慢很慢
所以最好是找出基于什么樣是sql注入
比如,我們找出了是基于時間的
則我們在url后面添加參數 --technique=T 則 可以基于時間的盲注探測,
布爾和其他的注入也是同樣道理
可以看到正在破解數據庫名稱
**
總結:
1.基于盲注不會直接回顯,只能使用真和假靠猜測,可以構造各種各樣的sql語句
2.當判斷出,可以使用真假判斷時,則可以確定存在盲注,則可以進行注入
3.通常注入都有waf,所以一般需要配合繞過技術,才能獲得數據
**
總結
以上是生活随笔為你收集整理的sql_1-2_get基于盲注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql注入 1-1_基于报错的注入
- 下一篇: SQL注入 1-3_基于post报错注入