首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java源码来看Native命令执行方法

这里主要是对Java中多种命令执行的方式跟踪源码进行原理分析、构造利用代码、集成自研工具。...一个普通的命令执行是 Runtime.getRuntime().exec("calc"); 如果使用反射机制 可以是 Class.forName("java.lang.Runtime").getMethod...执行命令的过程 在这里接收一个String类型的参数,调用exec的另一个重在方法对参数进行处理,将其通过分隔符,将其封装成了数组对象(这里就是一个字符串) 之后通过参数是String[]类型的另一个重载方法...如果hook掉了我们可以通过使用ProcessBuilder类来进行命令执行的构造 new ProcessBuilder("calc").start(); 或者使用反射的思路构造...方法(linux)中执行命令,我们同样可以通过反射这两个方法进行命令执行

48320

Process类详解

ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息...每个进程生成器ProcessBuilder对象管理这些进程属性: 命令 是一个字符串列表,它表示要调用的可执行外部程序文件及其参数(如果有)。 环境 是变量 到值 的依赖于系统的映射。...ProcessBuilder.start() 只支持字符串数组参数。 创建的子进程没有自己的终端或控制台。...(); } 注意 ProcessBuilder 第一个参数必须是可执行程序,可以添加参数使用{"cmd", "/c"} 或 {"/bin/bash", "-c"}。...// Do not let external processes block on I|O streams // 场景一: 使用java.lang.ProcessBuilder.redirectErrorStream

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Java魔法堂:调用外部程序

Windows下调用系统命令,像dir等命令是由cmd解析器解释执行的,因此若直接写"dir"则会被认为在当前工作目录下有一个"dir.exe"文件,那么当然会执行失败;在Linux下调用ls等是同样道理...调用CMD命令的方式为Process proc = r.exec(String.format("cmd /c %s", "cmd命令,如dir、type等")),若要启动一个新的Console执行命令,...Shell命令的方式为Process proc = r.exec(String.format("/bin/sh -c %s", "shell命令,如ls、cat等")),若要启动一个新的Terminal执行命令..."成功" : "失败"); } catch(Exception e){ e.printStackTrace(); } 注意:外部程序在执行结束后将会自动关闭,否则不管是字符流还是字节流均由于既读不到数据...简化输入输出重定向的java.lang.ProcessBuilder 功能和java.lang.runtime#exec一样,只是java.lang.ProcessBuilder仅接收命令行以数组形式传递给

1.6K10

【Jenkins 插件】使用 SSH Slaves 创建节点执行任务

当选定了一个虚拟机或者服务器准备当作节点之后,就需要给这个节点配置 Java 环境,其实就是安装 Java,所以如果已经安装过了就可以跳过这个步骤。...下载 Java 安装包 虽然使用 yum install 命令也是可以安装 java 的,但是据我所了解的是通过 yum 安装的 java 可能会缺少一些包,所以一般的文章都是推荐使用官方的安装包解压到服务器...选中的节点配置好 Java 环境之后,现在可以开始在 Jenkins 页面来配置节点。...节点执行任务 执行任务的时候,在任务的基础信息里面的限制项目的运行节点中选择配置的节点的标签即可。...总结:Jenkins 主从节点的模式非常适合多种语言或者环境的构建,可以把执行不同任务的主机当作节点去执行任务,这样就做到了一个主节点分配任务,其他节点执行

82420

JAVA语法到案例,定义到使用,详细解释Java 内部类的完全实现

内部类 Java 类中的可以定义的成员有:字段、方法、内部类,内部类是定义在类结构中的另一个类,因为定义在类的内部,故称为内部类。...在Java中的LinkedList的源码中,使用一个内部类Node来封装链表列表中的每一个节点,在节点中存储了当前节点的值,上一个节点,下一个节点这些信息;而这些信息是不能外部对象直接读取和使用的,因此...不过局部内部类使用的较少,在开发中也不推荐使用。...; 局部内部类访问的局部变量必须使用final修饰,在Java 8中是自动隐式加上final,但是依然是常量,值不能被改变; 为什么不推荐使用局部内部类?...匿名内部类的特点: 匿名内部类本身没有构造器,但是会调用父类构造器; 匿名类尽管没有构造器,但是可以在匿名类中提供一段实例初始化代码块,JVM在调用父类构造器后,会执行该段代码; 内部类处理可以继承类之外

73850

如何使用PXEThiefMicrosoft终端配置管理器中提取密码

关于PXEThief PXEThief是一个由多种工具构成的强大信息安全研究工具,该工具可以Microsoft终端配置管理器(ConfigMgr,通常称为SCCM)中的操作系统部署功能中提取出密码...该工具允许配置的网络访问帐户以及任务队列账号中收集凭证信息,这些活动目录账号一般都会被过度授权,并能够进行权限提升。...pxethief.py 1或pxethief.py 2来识别和生成一个媒体变量文件,请确保工具使用了正确的接口,如果接口不正确的话,则需要在settings.ini中手动配置; 工具下载 由于该工具基于...接下来,使用下列命令将该项目源码克隆至本地: git clone https://github.com/MWR-CyberSec/PXEThief.git (向右滑动、查看更多) 然后使用pip命令和项目提供的...requirements.txt安装该工具所需的依赖组件: pip install -r requirements.txt 工具使用 python pxethief.py -h pxethief.py

84020

使用到原理学习Java线程池

Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。 所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁。...BlockingQueue:阻塞队列(BlockingQueue)是java.util.concurrent下的主要用来控制线程同步的工具。...1、当一个线程完成任务时,它会队列中取下一个任务来执行。...所以一般情况Thread的run()方法就不会结束,而是不断执行workQueue里的Runnable任务,这就达到了线程复用的原理了。...总结 通过对ThreadPoolExecutor源码的分析,从总体上了解了线程池的创建,任务的添加,执行等过程,熟悉这些过程,使用线程池就会更轻松了。

32721

如何使用EndExtJS文件中提取出所有的网络终端节点

关于EndExt EndExt是一款功能强大的基于Go语言实现的网络安全工具,在该工具的帮助下,广大研究人员可以轻松JS文件中提取出所有可能的网络终端节点。...比如说,当你waybackruls抓取所有JS文件,甚至目标网站的主页收集JS文件URL时。如果网站使用的是API系统,而你想查找JS文件中的所有网络终端节点时,该工具就派上用场了。...我们只需要给该工具提供JS文件的URL地址,它就可以帮助我们抓取目标JS文件中所有可能的网络终端节点、URL或路径信息。...工具安装 由于该工具基于Go语言开发,因此我们首选需要在本地设备上安装并配置好最新版本Go语言环境: brew install go 接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地: git...-p 开启公开模式,显示每一个终端节点的URL地址 -u string 需要爬取网络终端节点的单个URL地址 (向右滑动,查看更多) 许可证协议 本项目的开发与发布遵循MIT

15320

JAVA 反射机制

和getMethod类似,getConstructor接收的参数是构造函数的的列表类型,因为构造函数也支持重载,所以要用参数列表类型才能唯一确定一个构造函数 比如我们常用的另一种执行命令的方式ProcessBuilder...,我们使用反射来获取其构造函数,然后 调用start()来执行命令 接下来简单介绍一下ProcessBuilder。...当getRuntime被禁用时,可以用ProcessBuilder执行命令。...它有两种构造函数 public ProcessBuilder(List command) public ProcessBuilder(String... commang) 接下来看这个执行命令的...,并且用Arrays.asList方法将要执行的命令转为List类型; 5、返回List类型的command; 如何执行私有方法 使用getDeclared系列方法,函数介绍如下 getConstructor

34410

利用Java反射和类加载机制绕过JSP后门检测

/c" 或者 "/bin/bash -c" 来执行命令 5、不导入过多的包 虽然做的绕过考虑不多,还 带有 ProcessBuilder 关键字,但还是没被以下软件和平台检测出来: virustotal...不然,还可以使用 Java 反射技术既绕过软件对 "Runtime"、"exec" 等关键词的检查又使用 exec 函数来执行系统命令。...%> 标签里声明了用来执行系统命令的 getPicture 方法, 标签里接受输入的命令,调用了 getPicture 方法,执行命令并返回结果 标签里输出系统命令执行结果到网页的...Class 对象;第三种使用 Java 反射机制和第四种使用 Java 类加载机制,都可以全限定的类名字符串中获得 Class 对象,编码或变换下字符串的表现形式就可以规避 Runtime 等关键字...0x07:后记 Java 语言不像 PHP 等语言那么灵活,本文探讨的绕过检测的方法,尽量使用较少的代码量和文件,达到了规避 Runtime、ProcessBuilder 等关键字 执行系统命令的效果,

2.3K00

wav到Ogg Opus 以及使用java解码OPUS

采样率 采样频率,也称为采样速度或者采样率,定义了每秒连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。...OPUS编解码 https://github.com/lostromb/concentus 是一个纯java库,可以编解码OPUS。...OPUS一般是分帧编码,比如一个320采样点(640字节)的数据,编码后为70多个字节,和PCM一样,编码后的OPUS不能直接播放: 无法文件本身获取音频的元数据(采样率,声道数,码率等) 缺少帧分隔标识...,无法连续的文件流中分隔帧(尤其是vbr情况) 伴随着HTML5的发展,出现了OGG媒体文件格式,Ogg是一个自由且开放标准的多媒体文件格式,由Xiph.Org基金会所维护。...java 解码OPUS文件 通过ffmpeg可以轻松的将wav转换为opus文件,本质是一个ogg封装的opus,我们可以通过vorbis-java 来读取opus文件。

2.9K31

Java安全-反射篇

Java安全可以反序列化漏洞开始说起,反序列化漏洞⼜可以反射开始说起。...当调用newInstance不成功时,原因可能是: 使用的类没有无参构造函数 使用的类构造函数是私有的 私有的类构造方法 最常见的情况就是java.lang.Runtime,这个类在构造命令执行Payload...获取到构造函数后,使用newInstance来进行实例化 以另一种命令执行方式ProcessBuilder类为例,该类有两个构造函数: public ProcessBuilder(List<String...先通过反射来获取其构造函数,再调用start()方法执行命令: package com.naraku.sec.reflection; import java.util.List; import java.util.Arrays...2018中某道题的第三方Writup:http://rui0.cn/archives/1015 在JAVA中可以通过下面代码来执行命令,但在题目中使用了黑名单 Runtime.getRuntime()

62920

JDK源码中探究Runtime#exec的限制

环境搭建  之后使用docker起一个具有反序列化的漏洞的Java服务(能够执行命令就行)。...起因  我这里使用的是CVE-2020-2551进行利用,我们首先进行curl命令执行看看是否可以执行命令。...该方法的注释中也能够看出端倪来。 使用通过调用 new StringTokenizer(command) 创建的 StringTokenizer 将命令字符串分解为标记,而无需进一步修改字符类别。...类对象的创建来,在Java中另一种执行命令的方式就是通过调用ProcessBuilder#start()方法来执行命令。...总结  使用Runtime.getRuntime().exec()方法执行命令的时候,会将传入的字符串命令,根据\t\n\r\f等分隔符进行分割,之后在进行命令的执行

56920
领券