SQL盲注篇之布尔盲注
文章目錄
- 前言
- 一、關于SQL盲注
- 二、實戰—封神榜
- Pass-05
- 總結
前言
關于SQL盲注的一些要點,首先我會介紹一下關于SQL語句在前后端的執行流程,以便大家更好地理解SQL注入這個流程,方便初學者進行理解跟進。
一、關于SQL盲注
由于SQL注入并不是都會直接顯示查詢的內容,有時候只是回顯查詢正確與否,并不能看查詢到的數據結果,這時候我們就需要一種新的注入方式,這就是SQL盲注,而我們根據回顯的方式不同將盲注主要分為布爾型盲注和時間盲注。接下來我將會以封神臺為例,講解一下SQL布爾型盲注的大致流程。
二、實戰—封神榜
Pass-05
- 整理思路
開始之前我們先整理一下自己的注入思路,首先,我們只能從頁面獲取我們注入成功與否的信息,并不能直接獲取數據庫名、表明、字段名等等之類的信息,因此,之前的注入方式不再使用,因此我們可以換一個角度來考慮問題,既然我們只能獲取對與錯這個消息,那我們就可以通過先判斷庫名、表名、字段名所含的字符個數,之后再想辦法將字符串切片(學過python和matlab的同學可能對切片比較了解),一個一個字符通過ascii碼表進行判斷對錯,當返回是正確的時候,說明對應位置的字符是正確的,之后我們一次一次的判斷就可以判斷出庫名、表名字、字段名。最后我們也可以通過這種方式判斷flag。
代碼如下(示例): - 判斷SQL注入點是否存在
- 獲取庫名的字符串個數
但是我們發現數據庫名由12個字符組成,每個字符又有128種可能,一共就有12*128種可能,這還只是數據庫名,后面還有表名、字段名、flag,那每次手工輸出判斷不是累炸了。
所以我們需要借助工具幫我們處理這種大量、重復性的工作。
- 使用burp代理進行爆破
這從瀏覽器設置把數據包發給8080端口,并設置有代理接收,從burp里設置,代理8080端口。這樣burp就可以代理瀏覽器發包,這樣我們就可以在burp里修改瀏覽器發給服務器的包,在burp里面有一個模塊能夠進行爆破操作。
我們先來看一下我們構造的語句在瀏覽器發的數據包里長什么樣吧。
這里我們要注意一下,這里我們要判斷,所以要用等號,而不是大于,后續爆破也是一個一個判斷ASCII碼的值,如果這里是后續抓包判斷會很繁瑣。
從這里我們可以看到,我們執行的語句就是這條,接下來我們右鍵發送到intruder模塊
這里我們點擊第四個。
這里先清除默認爆破位置,選中我們需要的爆破模塊,第一個是字符串的位置,第二格式對應位置的字符串的ASCII碼
接下來我們設置這兩個位置的在載荷(爆破內容),兩個載荷均選擇數字,第一個選擇1-12(因為有12個位置需要爆破),第二個載荷設置成0-127(所有ASCII碼的編號)
點擊開始攻擊
布爾盲注返回頁面顯示不通,所以返回的包長度肯定是不一樣的,所以我們就可以根據包的長度斷定那些包是正確的返回結果,從圖上來看,標綠之前的包的長度均為2700左右(差別1-2是因為Paylode1,2的字符串個數差別)。
由此我們可以讀出位置1-12的ASCII碼分別是:107 97 110 119 111 108 111 110 103 120 105 97
查詢ASCII碼表得到庫名為: kanwolongxia
- 獲取表名的長度
了解之前的查詢之后我們把查詢部分的語句換一下,改成查詢表名就可以了,然后我們再次抓包進行爆破
抓包爆破結果為:
獲得表名:loflag
同樣的方式我們可以獲得列名:flaglo
- 獲取flag
獲flag: zKaQ-QQQ
總結
以上是對SQL盲注的手工注入方式,答題思路只是通過一個一個字符對ASCII碼表遍歷,進行布爾判斷,進而的到相應的信息。構造語句把對應查詢內容位置的內容替換即可。
總結
以上是生活随笔為你收集整理的SQL盲注篇之布尔盲注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue.js 目录结构
- 下一篇: mysql多源复制 知乎_MySQL多主