尝试设置特定的安全测试用例。我们的想法是创建一个可以使用select语句从PL / SQL调用的包。该包工作并创建表,但是当我在Oracle SQL Developer中运行SELECT evil_pkg.CreateTab() FROM DUAL
时,我得到了
ORA-00904:" EVIL_PKG"。" CREATETAB":无效的标识符 00904. 00000 - "%s:无效标识符" *原因:
*动作:行错误:41列:8
这有可能做到吗? 这里的目标是以这种特殊的方式执行包,而不仅仅是 执行包。
这是包裹:
--Specification
CREATE OR REPLACE PACKAGE evil_pkg AS
PROCEDURE CreateTab;
END evil_pkg;
/
--Body
CREATE OR REPLACE PACKAGE BODY evil_pkg AS
PROCEDURE CreateTab
AS
BEGIN
execute immediate 'CREATE TABLE my_evil_table (id number) ';
COMMIT ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
ROLLBACK;
RAISE;
END CreateTab;
END evil_pkg;
答案 0 :(得分:1)