oracle performs the implementation of cmd

  • 2020-06-03 08:39:57
  • OfStack

But there is a simple way to execute the cmd command:
SQL > host net user
User accounts for \\PC-ATQHJ4UG1SDA
----------------------------------------------------------------------------
__vmware_user__ admin Administrator
ASPNET Guest IUSR_PC-ATQHJ4UG1SDA
IWAM_PC-ATQHJ4UG1SDA SUPPORT_388945a0
The command completed successfully.
unix or linux
! command
= = = = = = = = = = = = = = = = = = = = = = supplement = = = = = = = = = = = = = = = = = = = = = =
Two other online methods:
1 is using msvcrt.dll
Write a c: \ orac sql
Content:
Rem
Rem oracmd.sql
Rem
Rem Run system commands via Oracle database servers
Rem
Rem Bugs to david@ngssoftware.com
Rem
CREATE OR REPLACE LIBRARY exec_shell AS
'C:\windows\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
Then C: \ > sqlplus /nolog
SQL*Plus: Release 8.1.7.0.0 - Production on Thu Jun 7 14:25:38 2001
(c) Copyright 2000 Oracle Corporation. All rights reserved.
SQL > connect system/ ES93en@orcl (username and password and sid, respectively)
Connected.
SQL > @c:\orac.sql
Library created.
No errors.
Package created.
No errors.
Package body created.
No errors.
SQL >
SQL > exec oracmd.exec ('dir > c:\oracle.txt');
The results appear on my machine
Error in line 1:
ORA-28595: Extproc Agent: The DLL path is invalid
ORA-06512: in "SYSTEM.ORACMD ", line 2
ORA - 06512: in line 1
It didn't work.
The second method
c:\1.sql
create or replace and compile
java souRCe named "util"
as
import java.io.*;
import java.lang.*;
public class util extends Object
{
public static int RunThis(String args)
{
Runtime rt = Runtime.getRuntime();
int RC = -1;
try
{
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
RC = p.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
RC = -1;
}
finally
{
return RC;
}
}
}
c:\2.sql
create or replace
function RUN_CMz(p_cmd in varchar2) return number
as
language java
name 'util.RunThis(java.lang.String) return integer';
c:\3.sql
create or replace procedure RC(p_cmd in varChar)
as
x number;
begin
x := RUN_CMz(p_cmd);
end;
After logging in, it is still executed in sequence
SQL > @c:\1.sql
/
@c:\2.sql
/
@c:\3.sql
/
variable x number;
set serveroutput on;
exec dbms_java.set_output(100000);
grant javasyspriv to system;
grant javauserpriv to system; (Online method without this 1 line, I can not succeed, add can)
exec: x: = run_cmz (' ipconfig '); The command ran successfully
Test environment win2003+oracle11g

Related articles: