代码示例 public String subString(String str, int subBytes) { int bytes = 0; // 用来存储字符串的总字节数...} char c = str.charAt(i); if (c < 256) { bytes += 1; // 英文字符的字节数看作...1 } else { bytes += 2; // 中文字符的字节数看作2 if(bytes - subBytes
0x00 写在前面 为什么会有这一些列的文章呢?...因为我发现网上没有成系列的文章或者教程,基本上是 Java 代码审计中某个点来阐述的,对于新人来说可能不是那么友好,加上本人也在学习 Java 审计,想做个学习历程的记录和总结,因此有了本系列的文章。...html 变量中,输出到浏览器 代码的主要功能即是模拟一个 http 请求,如果没有对请求地址进行限制和过滤,即可以利用来进行 SSRF 攻击。...以上,因为本机地址存在 SSRF 漏洞,那么久可以利用该漏洞去探测虚拟机开放的端口,如下图所示: 如果该端口没有开放 http/https 协议,那么返回: 根据不同的返回结果,就可以判断开放的 http...Hawt Hawtio小于2.5.0版本都容易受到SSRF的攻击,远程攻击者可以通过 /proxy/地址发送特定的字符串,可以影响服务器到任意主机的HTTP请求。
原因介绍 除了request.getInputStream()及其他多个关联方法不能多次调用外,还有另外一个容易引起bug的地方: 先调用request.getParameter()家族方法,可能导致...先调用request.getInputStream()及其关联方法会导致request.getInputStream()家族方法返回空(或者缺少值)。...同理,先调用 getInputStream()也会导致getParameterXXxx()返回值变少甚至没有。...所以会导致一种错觉:为什么我POST body中的内容无法从getInputStream()中获取到?还有就是会产生一些误会。...[]byte{} —— 一个空的主文。
IP地址的字符串或主机名生成IP地址对象(用于获取别人的IP地址对象) ——–getHostAddress() 返回IP地址的字符串 ——–getHostName() 返回计算机的主机名...准备数据,把数据封装到数据包中发送,发送端的数据包要带套接字 3. 调用udp的服务,发送数据 4....建立udp的服务 2. 准备空的数据包接收数据 3. 调用udp的服务接收数据 4....,并且要监听一个端口 DatagramSocket socket = new DatagramSocket(9090); //准备空的数据包用于存放数据...,要监听一个端口 DatagramSocket socket = new DatagramSocket(9090); //准备空的数据包存储数据
String getRequestURI() 从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。...String getParameter(Stringname) 以字符串形式返回请求参数的值,或者如果参数不存在则返回null。...String[] getParameterValues(Stringname) 返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。...Enumeration getHeaderNames() 返回一个枚举,包含在该请求中包含的所有的头名。 String getHeader(Stringname) 以字符串形式返回指定的请求头的值。...,创建Student实例 解析上述json格式的字符串,处理成map键值对结构 遍历所有键值对,看键的名字和student实例中那个属性名字匹配,就把对应的value设置到该属性中.
从一个简单例子聊RPC 面试官: 你们的项目服务之间是如何相互调用的呢? 了不起: 通过RPC调用 面试官: 了解RPC的原理吗?...3、RPC框架都会有服务降级、流量控制的功能,保证服务的高可用。 一个简单例子 下面就举一个1+1=2 的远程调用的例子。客户端发送两个参数,服务端返回两个数字的相加结果。...RpcConsumer类调用CalculateService中的Calculate方法, 首先通过RpcFramework中的call方法,注册自己想要调用那个服务,返回代理,然后就像本地调用一样去调用...代码中的temp1 和temp2都是字符串“1”。Server返回相加结果1。 让我们看一下Server的返回结果 0200 0000 一共32位表示body 长度为2个字节。...总结 本文只是通过一个简单例子介绍了RPC中的I/O模型以及序列化,其实RPC本身是一个很大的话题,比如如何保证在不可靠的网络中保证RPC的可靠性?如何实现客户端的重试调用、超时控制?
src/main/resources目录下) 的文本时, 也会遇到, 二、问题描述 发现问题 原来代码 该代码功能是利用 common.io 包下的FileUtils来读取文件, 放到一个字符串中 String...然后调用getInputStream 来获取资源文件 下面我们来分析这些代码 在 ClassPathResource 在实例化时, 会初始化类加载器 classLoader 并将项目所用到的所有路径加载到类加载器...所以classLoader不为空, 因此会执行 getResourceAsStream 方法, 我们来追一下这个方法 getResourceAsStream 方法中的getResource是实际的业务处理方法..., 就是我用的测试项目因为在 maven 里面指定了某些格式的文件....出现找不到文件的情况, 我们只需要例化ClassPathResource(文件名) 对象. 然后调用getInputStream 来获取资源文件.
一旦套接字被打开,Socket类中的getInputstream方法返回一个InputStream对象。TCP(传输控制协议)网络协议。...每当程序建立一个新的套接字连接,也就是当调用accpet()时,会启动一个新线程来处理服务器和客户端之间的连接,而主程序将来立即返回等待下一个连接。...使用getInputStream方法获取一个输入流用以读取信息,这个输入流与URL类中的openStream方法返回的流相同。另一个方法getContent在实际操作中并不是很有用。...setRequestProperty总览全局的方法:设置对特定协议起作用的任何“名-值(name-value)对”例如访问一个有密码保护的Web页:将用户名、冒号和密码以字符串形式连接一起String...没有方法可以返回字段的数量,必须反复调用getHeaderFieldKey方法直到返回null为止。
大家好,又见面了,我是你们的朋友全栈君。 J2EE下Excel转JSON Excel转Json的需求 反正我对SSM基本不会的情况下来到现在这家公司,都是90后,感觉很好。...第二天就给我开发任务,就是把用户上传的Excel文件转成JSON返回给前台用于大屏的数据展示。...这东西感觉本来就是javase的。 方案2:问了个大神,告诉我一个词叫POI。...捣鼓了一天,终于解决了,对,解决方案就是 Apache的 POI (我的选择方案) Excel的xls和xlsx的差别 xls 是Excel 2007以下版本的后缀名,但是所有excel都能打开,...Jar包的,留下一句“世界和平“和邮箱,我就发给你 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135266.html原文链接:https://javaforall.cn
选择255.255.255.255(为空也默认是这个)发送,如图: 也可以看到我的ip为192.168.164.1,如果我对这个ip点击震动,那么我的窗口会震动,因为是给自己发送,如果换成192.168.164.2...* 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流....* 调用Socket的getInputStream()和getOutputStream()方法获取和服务器端相连的IO流...getInetAddress()是返回套接字连接的地址比如"\127.0.0.1",返回的是一个InetAddress对象,调用getHostAddress()可以返回 IP 地址字符串(以文本表现形式...返回的是一个返回的是一个InetAddress对象,调用getHostAddress()可以返回 IP 地址字符串(以文本表现形式)。
123456} 的格式,用一个对象包裹起来 形参为数组和Map类型的构造方法调用 字符串数组 创建格式: String[] a = {"abc", "def"}; Map: java中的map,可以理解为...调用方法,调用方法时,用 上一步代码中获取到的方法进行 invoke 调用操作 //调用时,如果参数是字符串数组,或者两个以上的参数 //最好使用 new Object[]{} 的形式传入...//兼容性好 //由于有返回值,我们在调用的时候也需要进行接收 //接受类型就看调用的类返回的类型了 String[] strs = (String[]) m.invoke...粗浅的说就是一个进程类 通过文档可以得知,我调用的这个exec方法需要一个String类型的参数,即要执行的系统命令 InputStream input = cmd.getInputStream() 其中...将当前的数据流读取出来,写入到一个 byte[]类型的变量里。 ? String res = new String(a); 将byte类型转换成字符串。
ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息...每个进程生成器ProcessBuilder对象管理这些进程属性: 命令 是一个字符串列表,它表示要调用的可执行外部程序文件及其参数(如果有)。 环境 是从变量 到值 的依赖于系统的映射。...Runtime.exec() 可接受一个单独的字符串,这个字符串是通过空格来分隔可执行命令程序和参数的;也可以接受字符串数组参数/list。...不正确地处理这些外部程序可能会导致一些意外的异常、DoS,及其他安全问题。 一个进程如果试图从一个空的输入流中读取输入,则会一直阻塞,直到为其提供输入。...,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序,waitFor()方法也有很明显的弊端,因为java程序给进程的输出流分配的缓冲区是很小的
,其中的name不是路径,实际的值其实是空。...是否可以在不注册新的Controller情况下加入内存马呢 假设我发现了目标机器存在一个接口,返回ok字样 (找到一个总返回固定字符串的接口用来劫持) 通过我一些手段,做到了这样的效果: 如果访问/...这里的method是Controller中的方法对象,使用getBean方法得到容器中的Controller对象然后invoke调用 隐形马核心原理 于是产生一个思路:把反射调用的方法改成特殊的方法...static final String text = "ok"; 需要找到一处接口:通常情况下返回一个固定的值 为什么要找这样一个接口:不容易发现该接口出问题,黑盒很难模拟出完整的业务逻辑 (如果熟悉该接口的业务逻辑造一个一模一样的也不是难事...catch (Exception ignored) { } response.getWriter().print(text); return text; } 逻辑如下: 不带cmd参数返回正常的字符串
Java对Runtime返回值的一般规则,0代表正常退出,非0代表异常中止,这只是Java的规则,在各个操作系统中总会发生一些小的混淆。...这里要注意的是: public Process exec(String[] cmdarray, String[] envp, File dir); 这个方法中cmdArray是一个执行的命令和参数的字符串数组...因为exitValue方法是非阻塞的,在调用这个方法时外部命令并没有返回所以引起异常。阻塞形式的方法是waitFor,它会一直等待外部命令执行完毕,然后返回执行的结果。...这是为什么那? JDK文档中的解释:因为本地的系统对标准输入和输出所提供的缓冲池有效,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程的锁,甚至死锁。...答:调用Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例,该实例可用于控制进程或取得进程的相关信息。
,从MultipartHttpServletRequest 中获取到CommonsMultipartFile类型的 shopImg,同时为了简化Controller层调用Service层的难度,这里我们对...Service的addShop做了改造,这样就避免了将CommonsMultipartFile转换为File,而是通过CommonsMultipartFile的getInputStream()方法,以流的形式作为入参...控制层调用Service层,Service层addShop方法根据入参获取到文件的后缀名后,写入shop的基本信息,然后调用工具类获取文件的存储路径,将图片打上水印存入对应的文件目录,最后更新到tb_shop...又可以直接处理输入流 // 因为InputStream中我们无法得到文件的名称,而thumbnail中需要根据文件名来获取扩展名,所以还要再加一个参数String类型的fileName //...既然第二个和第三个参数都是通过shopImg获取的,为什么不直接传入一个shopImg呢?
大家好,又见面了,我是你们的朋友全栈君。 在Android项目中使用到了HttpURLConnection请求资源,对于其中的方法setRequestProperty()的调用顺序有些疑惑。...我的问题是:如果调用了setRequestProperty(name,value)之后没有明确调用connect()方法,那设置的参数是否会生效呢?...为了验证我的想法,做了如下验证: 实验一:在调用setRequestProperty(name,value)之后,调用getInputStream()之前没有明确调用connect()方法,代码如下所示...很显然,不论是否明确调用connect()方法,通过setRequestProperty(name,value)设置的属性都生效了,那这是为什么呢?...个人建议还是明确调用一些比较好,因为这样对于程序员自己来说是一个明确的控制,否则埋藏一些隐性的BUG,难以察觉。
大家好,又见面了,我是你们的朋友全栈君。...variable result can only be null at this location StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象...参考网址:https://developer.android.google.cn/reference/java/lang/StringBuilder.html 由上面的官方文档,我们知道以下几点: 一个可变的字符序列...例如,如果z引用一个当前内容为“start”的字符串的生成器对象,则该方法调用z.append(“le”)将使字符串生成器包含“startle”,而z.insert(4,”le”)将更改字符串生成器,使之包含...,然后对网站返回的数据流进行读取,最终应用StringBuilder()进行字符串数据的读取和显示。
AJ-Report是全开源的一个BI平台。在其1.4.0版本及以前,存在一处认证绕过漏洞,攻击者利用该漏洞可以绕过权限校验并执行任意代码。...DataSetParamDto 对象并返回一个 Object String validationRules = dataSetParamDto.getValidationRules(); //...Nashorn 支持 JavaScript 与 Java 之间的互操作性,允许JavaScript代码调用Java类和方法 engine.eval(validationRules): 这行代码使用了一个...engine是 ScriptEngine 的一个实例,来执行传入的 validationRules 字符串,即执行一段 JavaScript 代码,如果传递给 eval 方法的脚本来自不受信任的来源,...攻击者可以编写恶意脚本执行任意Java代码 根据 exec 的类型,使用 ObjectMapper 将其转换成相应的 Java 类型,并返回结果。
现在,我们有了更为优雅的线上调试方法,来自阿里巴巴开源的Arthas 下图是Arthas文档中对于为什么要使用它的描述,我进行了精简: ?...tt:官方名为时空隧道 这是我调试用的最多的指令,在你对某方法开启tt后,会记录下每一次的调用(你需要设置最大监控次数),然后你可以在任何时候会看这里面的调用,包括出参,入参,运行耗时,是否异常等。...某功能Bug导致服务器返回500 首先通过trace看异常报错的方法,之后通过tt排查方法,发现入参进来后,居然走错了方法(因为多态),走到了返回null的方法中,所以导致了NPE空指针错误。 ?...启动 使用了阿里开源的组件cli,对参数进行了解析 com.taobao.arthas.boot.Bootstrap ? 在传入参数中没有pid,则会调用本地jps命令,列出java进程 ?...关于源码,深入下去还有很多东西需要生啃,我也没有消化得很好,大家可以继续阅读详细资料。 总结 Arthas是一个线上Debug神器,小白也可以轻松上手。
有些服务器会在发现 / 路径的时候自动问/index.html 查询字符串: 可以省略 片段标识: 可以省略 3.4 关于 URL encode 和 URL decode 像 / ?...sogou.com GET 请求的特点 首行的第一部分为 GET URL 的 query string 可以为空, 也可以不为空. header 部分有若干个键值对结构. body 部分为空....相似,只是具有幂等特性,一般用于更新 DELETE 删除服务器指定资源 OPTIONS 返回服务器所支持的请求方法 HEAD 类似于GET,只不过响应体不返回,只返回响应头 TRACE 回显服务器端收到的请求...是在 HTTP 协议的基础上引入了一个加密层(SSL/TLS). 7.2 为什么引入 HTTPS 因为HTTP是明文传输, 本来要传什么,实际上就传了什么,但是一旦这样传输,在传输的过程中, 被第三方截获到了...解决办法: 引入证书. ③ 引入证书 在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书.