1、
2、3、
普通注入是會顯示一些錯誤資訊在頁面上給攻擊者判斷,也就是說它會有多種情況,從而方便攻擊者。而盲注則是只有兩種情況,即
true
和false
,這樣說並不是很準確,因為
sql查詢無非就這兩種情況,應該說是盲注的時候你只能得到乙個正常的頁面或者是什麼頁面的不存在,甚至你在查詢表的記錄過程也不會有顯示。
關於更多
sqldvwa
平台的注入
先在sql查詢
中看兩條語句:
可以看到加了引號和不加引號是有區別的,乙個是以數字型處理,乙個是以字元型處理,所以在dvwa中,輸入1+1,可以得到:
而輸入『1+1』則沒有輸出,所以可以猜測後台是加了單引號,作為字元型處理的。
對於盲注,純手工的話很困難,所以我們用乙個滲透工具:sqlmap。應用如下:
1、找到可能的注入點:(192.168.100.25是我的dvwa平台所在虛擬機器的ip位址)
輸入命令:sqlmap.py-u然後得到結果:
獲知id部分存在漏洞,易被注入。
再看一看其詳細資訊:
注意其灰色字型,是sqlmap的注入測試語句。
函式ifnull(fielda,fieldb)
,意義是當欄位
fielda
是null
時取fieldb
,不是null
時取fielda
的值。這個函式與外連線配合使用時能起到
oracle
的iif
或是nvl
的作用。
cast()
函式的引數是乙個表示式,它包括用
as關鍵字分隔的源值和目標資料型別。將前面的
char(……)
轉換為char。
第二個payload的sleep(5)表示休眠5秒。關於這個休眠函式有非常大的作用:
借助於sleep(n)
這個函式我們可以在
mysql server
的processlist
中捕獲到執行迅速不易被檢視到的語句以確定我們的程式是否確實在
server
端發起了該語句。比如我們在除錯時想確定一下程式是否確確實實向
server
發起了執行
sql語句的請求,那麼我們可以通過執行
show processlist
或者由information_schema.processlist
表來檢視語句是否出現。但往往語句執行速度可能非常快,這樣的話就很難通過上述辦法確定語句是否真正被執行了。在這種情況下,可以通過在語句中新增乙個
sleep(n)
函式,強制讓語句停留
n秒鐘,
但是使用這個辦法是有前提條件的,也只指定條件的記錄存在時才會停止指定的秒數
,查詢不存在的資訊,即使新增了
sleep(n)
這個函式,語句的執行還是會一閃而過。
--current-db
:獲得當前資料庫名
--current-db --tables –d dvwa
:使用dvwa
庫得到表名
-t guestbook –columns
:得到guestbook
的表結構
-t users –dump
:得到users
表的內容,在
sqlmap
詢問時候破解密碼時,選擇是,
sqlmap
會使用自己的字典來破解密碼,得到
5個使用者的密碼
--passwords
:使用sqlmap
自帶的字典可以破解出資料庫使用者的密碼
sql盲注特點 SQL盲注
盲注原理 盲注的分類 盲注常用函式 一 sql盲注概述 1.如果資料庫執行返回結果時只反饋對錯不會返回資料庫中的資訊 此時可以採用邏輯判斷是否正確的盲注來獲取資訊。2.盲注是不能通過直接顯示的途徑來獲取資料庫資料的方法。在盲注中,攻擊者根據其返回頁面的不同來判斷資訊 可能是頁面內容的不同,也可以是響...
SQL盲注 時間盲注,dnslog盲注
時間盲注原理 id get id sql select from users where id id limit 0,1 result mysql query sql row mysql fetch array result if row else 存在sql注入漏洞 然而頁面不會回顯資料,也不會回...
SQL注入學習筆記之SQL盲注
一 sql盲注的場景 1.提交乙個會觸發sql語句錯誤時,會返回乙個通用的錯誤頁面,而提交正確的sql時則返回乙個內容可被適度控制的頁面。2.提交乙個會觸發sql語句錯誤時,會返回乙個通用的錯誤頁面,提交正確的sql語句時,則會返回乙個內容不可控的頁面。3.提交受損或不正確的sql既不會產生錯誤頁面...