刷題[CISCN2019 華北賽區 Day2 Web1]Hack World
阿新 • • 發佈:2020-07-27
解題思路
打開發現是很簡單的頁面,告訴了表名和列名,只需知道欄位即可
嘗試一下,輸入1,2都有內容,後面無內容。輸入1'讓他報錯,發現返回bool(false)
大概思路就是布林型注入了,通過不斷返回正確值,猜測對應欄位
fuzz
通過fuzz發現,482長度的被禁了,472長度的可以使用,也就是說禁用了空格,union,or,and等
那就有點難辦了,聯合注入被禁,報錯注入被禁
首先我們先不看過濾,應該選擇的sql語句位為
select ascii(substr((select flag from flag),1,1)) ) >1 %23
由於空格被禁,我們使用括號或者tab替換空格
select(ascii(substr((select(flag)from(flag)),1,1)))>1%23
由於or被禁,並且不知道為什麼單獨使用||可以,但是與sql語句組合就不行了
爆破
這裡網上有兩種方法,異或和if
1.if
if(ascii(substr((select(flag)from(flag)),1,1))>1,1,2)
如果不會指令碼的話,通過bp的intruder模組,同樣可以爆破求出flag值,無非就是麻煩一點,ascii碼轉換成字元的形式,但其實和寫指令碼應該差不太多,
(平臺應該是對訪問做了限制,這裡執行緒需要設定的低一些)
2.異或
通過0與任何異或結果就是他本身的思想
0^(ascii(substr((select(flag)from(flag)),1,1))>1)
指令碼
網上有很多現成的指令碼,這裡就不再貼上來了,雖然自己寫指令碼能力差,但是希望能夠學習到其他大佬的指令碼,而不是貼到自己這,當一個指令碼小子
總結思路
- 常規的布林盲注,根據回顯爆破
- 需要根據一些過濾,進行相應的更改
知識點
- 布林盲注