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