CTF從入門到提升(五) 部分截取函數及bool型盲注相關例題分析

bool型盲注有區別與之前的基於時間的盲注,bool型盲注的頁面輸入會影響輸出。

​​我們來看操作理解一下:

語句結構id=1 ,我們去做判斷的時候是id=1 and 1=1,and 1=1的本質是返回一個true,true可以用1來代替,正常回顯。我們很多時候就會去接and=0,0類似於1=2返回是false, false類似於0的作用。
在這裏插入圖片描述
最後會影響到查詢結果的是後面的0和1。

比如說觸發查詢數據,if觸達的sleep執行成功返回SLEEP,執行失敗返回0,
在這裏插入圖片描述
如果映射到bool型盲注這裏不再是sleep,返回的結果變成1和0,如果if語句成功執行,它返回結果就是1和1,它不能成功執行返回的就是1和0。可以根據頁面的返回內容來判斷出到底語句查詢是成功還是失敗。bool型盲注的邏輯和基於時間的盲注是類似的,只不過判斷的方法上是略微有點區別。理解了基於時間的盲注後再回過頭來理解bool型盲注其實還應該是比較容易的。

先分享一些場景下截取相關的函數作爲知識補充,然後分享一道題。

(說起截取函數在第三節內容中提到過SUBSTRING函數,它是支持這種結構的,)
在這裏插入圖片描述
在這裏插入圖片描述
mid函數 、ORD()函數 、ASCII()函數
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
題目分享:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
連接數據庫操作,查詢user id是否存在,如果存在這個值,查詢出數據是一條就會進入到下面的一個邏輯中去。我們剛纔返回的是“ error password”,出現這個結果是因爲下面邏輯沒有滿足:
在這裏插入圖片描述

在這裏插入圖片描述

針對bool型注入,是不是隻要你能夠有一個true and fasle,就可以了,可以針對下面這個語句進行注入:
在這裏插入圖片描述
如果數據中存在id就會走到上面的if else 邏輯裏面去,因爲我們不知道密碼,最終返回的是error password。如果id是不存在的,它返回來就不會是一條是零條,所以它返回的就是一個error user id。

驗證一下,我們將user id 改成0
在這裏插入圖片描述
返回的是 error userid,說明,當userid 是0或1的時候對輸出產生了影響,基於這裏,我們就已經可以對它做一個盲注。我們來寫一下腳本,和之前的邏輯一樣引入一個庫:
在這裏插入圖片描述
寫腳本思路:
在這裏插入圖片描述
對它做一個分割和分離,分離的時候我們要看他的過濾機制到底是哪一些。

  • 空格不能用,但可以用內聯註釋
  • 不能引號就用阿斯克碼來代替

在這裏插入圖片描述
小於127,返回error password,
在這裏插入圖片描述
大於127,返回 error userid。

在這裏插入圖片描述

做盲注的時候可以將大於號變成等號,用二分法更快一點。

再舉一個放字母的栗子:
在這裏插入圖片描述

直接複製下鏈接:
在這裏插入圖片描述
在這裏插入圖片描述
請求發出去之後對它做一個判斷,定義一個變量,操作如圖:
在這裏插入圖片描述
可以隨便設time,out,但不能設太低,會直接報錯。這個請求發出去後會有一個response返回來,如果我們去檢測response中的內容,
在這裏插入圖片描述
我們想要的是error password,(content就是response中的頁面的信息),針對頁面信息我們去做個匹配,使用find進行匹配,找不到就返回-1,找到了就要做個添加,操作如圖:
在這裏插入圖片描述
在這裏插入圖片描述
找到後對返回值做添加:
在這裏插入圖片描述
繼續等待返回結果:
在這裏插入圖片描述
以上內容參考安全牛課堂《CTF從入門到提升

課程地址:https://www.aqniukt.com/my/course/8954​​​​​​​​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章