Oracle基於延時的盲注總結

2022-01-29 23:16:41 字數 2030 閱讀 7652

oracle注入中可以通過頁面響應的狀態,這裡指的是響應時間,通過這種方式判斷sql是否被執行的方式,便是時間盲注;

oracle的時間盲注通常使用dbms_pipe.receive_message(),而另外一種便是decode()與高耗時sql操作的組合,當然也可以是case,if 等方式與高耗時操作的組合,這裡的高耗時操作指的是,例如:(select count(*) from all_objects),對資料庫中大量資料進行查詢或其他處理的操作,這樣的操作會耗費較多的時間,然後通過這個方式來獲取資料。這種方式也適用於其他資料庫。

0x01 dbms_pipe.receive_message()函式延時盲注

dbms_lock.sleep()函式可以讓乙個過程休眠很多秒,但使用該函式存在許多限制。

首先,不能直接將該函式注入子查詢中,因為oracle不支援堆疊查詢(stacked query)。其次,只有資料庫管理員才能使用dbms_lock包。

在oracle pl/sql中有一種更好的辦法,可以使用下面的指令以內聯方式注入延遲:

dbms_pipe.receive_message('

rds', 10)

dbms_pipe.receive_message函式將為從rds管道返回的資料等待10秒。預設情況下,允許以public許可權執行該包。dbms_lock.sleep()與之相反,它是乙個可以用在sql語句中的函式。

延遲盲注中的應用:

如果頁面延時10秒返回,即存在注入。

來自官網的dbms_pipe.receive_message語法:

dbms_pipe.receive_message (

pipename     in varchar2,

timeout      in integer      default maxwait)

return integer;

可以暫時理解成dbms_pipe.receive_message('任意值',延遲時間)

decode不僅可以在布林盲注中運用,也可以用在延遲盲注中。

在decode注入裡加入延時語句。這裡加入了我們的dbms_pipe.receive_message函式。

當然,這裡延遲的操作不一定用延遲函式,也可以使用花費更多時間去查詢所有資料庫的條目。例如:

通過這種明顯時間差也能判斷注入表示式的結果。

延時盲注(一)

適用於,無法回現和無法顯示錯誤頁面的場景 我們看到介面,首先在url欄進行get傳參,但是沒有任何回顯,介面沒有變化 然後使用延時注入,這裡我們用到了資料庫裡的if語句 有點類似於三元運算,條件成立,就執行第二個,條件不成立就執行第三個。結果 12時網頁睡眠,可以判斷當前庫名有12個字元 結果 10...

滲透測試 SQL盲注基於布林的盲注

普通sql注入和sql盲注的區別 sql盲注的思路 基於時間的盲注 通過構造真or假判斷條件的sql語句,且sql語句中根據需要聯合使用sleep 函式一同向伺服器傳送請求,觀察伺服器響應結果是否會執行所設定時間的延遲響應,以此來判斷所構造條件的真or假 若執行sleep延遲,則表示當前設定的判斷條...

2020 07 13 SQL盲注 延時注入

思路 判斷是否存在注入,注入是字元型還是數字型 猜解當前資料庫名 猜解資料庫表名 猜解欄位名 猜解資料 1判斷注入型別 payload result 1 and sleep 5 延遲 1 and sleep 5 沒有延遲 存在字元型注入 2猜解當前資料庫名 2.1猜解資料庫名的長度 payload ...