1. 程式人生 > 實用技巧 >刷題[CISCN2019 華北賽區 Day2 Web1]Hack World

刷題[CISCN2019 華北賽區 Day2 Web1]Hack World

解題思路

打開發現是很簡單的頁面,告訴了表名和列名,只需知道欄位即可

嘗試一下,輸入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)

指令碼

網上有很多現成的指令碼,這裡就不再貼上來了,雖然自己寫指令碼能力差,但是希望能夠學習到其他大佬的指令碼,而不是貼到自己這,當一個指令碼小子

總結思路

  • 常規的布林盲注,根據回顯爆破
  • 需要根據一些過濾,進行相應的更改

知識點

  • 布林盲注