0x01oracle基於延時的盲注總結
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 (
pipename in varchar2,
timeout in integer default maxwait)
return integer;
可以暫時理解成dbms_pipe.receive_message('任意值',延遲時間)
decode不僅可以在布林盲注中運用,也可以用在延遲盲注中。
在decode注入裡加入延時語句。這裡加入了我們的dbms_pipe.receive_message函式。
當然,這裡延遲的操作不一定用延遲函式,也可以使用花費更多時間去查詢所有資料庫的條目。例如:
通過這種明顯時間差也能判斷注入表示式的結果。
謝謝卿哥哥
大哥帶的Orchel資料庫的報錯注入
0x01 使用報錯注入需要使用類似 1 報錯語句 1 報錯語句 使用比較運算子,這樣的方式進行報錯注入 mysql僅使用函式報錯即可 類似mssql報錯注入的方式。news.jsp?id 1 and 1 1 正確news.jsp?id 1 and 1 2 錯誤 存在注入 隨便輸入 發現存在報錯資訊我...
資料庫中帶時間戳資料總結
資料庫已經運用越來越廣泛,資料表中帶時間的資料記錄也越來越常見,下面對資料表中一種類似 歷史演變情況 資料集進行一系列的總結,供自己參考,供別人分享,一起學習進步。第一 背景 什麼是帶時間戳的資料表結構 下面簡稱歷史演變資料 舉例一種通人員履歷記錄 history 主鍵id 人員 staf id 單...
資料庫隔離級別(這位大哥寫的清楚)
原文 髒讀 讀取了未提交的新事物,然後被回滾了 事務a讀取了事務b中尚未提交的資料。如果事務b回滾,則a讀取使用了錯誤的資料。比如我給你轉了100萬,但是我還沒有提交,此時你查詢自己賬戶,多了100萬,很開心。然後我發現轉錯人了,回滾了事物。然後你100萬就沒了。在過程中你查到了沒有提交事物的資料 ...