java发送http的get、post请求,使用fastjson传json格式数据(application/json)

Fastjson 1.2.24反序列化漏洞实战:从原理到RCE复现 JSON反序列化是现代Web应用数据交换的核心技术,其原理是将JSON字符串转换为内存中的对象实例。然而,当反序列化过程允许用户指定任意类进行实例化时,便可能引发严重的安全风险。Java反序列化漏洞的核心技术价值在于揭示了类型安全与功能便利性之间的深刻矛盾,其应用场景广泛存在于RPC通信、配置文件解析和API数据接收等环节。本文聚焦于Fastjson库的AutoType机制,深入剖析其如何因默认开启且缺乏严格校验,成为攻击者利用JNDI注入实现远程代码执行的关键突破口。通过复现经典的JdbcRowSetIm 阅读详情

GET方式:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class HttpRequest {
    /**
     * 向指定URL发送GET方法的请求
     * 
     * @param url
     *            发送请求的URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return URL 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定 URL 发送POST方法的请求
     * 
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
}

POST方式:



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;

import com.alibaba.fastjson.JSONObject;

/**
 * Demo
 * @author swh
 * @version 1.0
 *
 */
public class Demo {
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

    public static void main(String[] args) {
        JSONObject jsonobject = new JSONObject();
        jsonobject.put("gxrq", "2018/07/06 18:30:26");
        jsonobject.put("pageNo", 1);
        jsonobject.put("pageSize", 10);
        jsonobject.put("fyId", 2400);
        jsonobject.put("ajlx", 1);
        //发送 POST 请求
        String sr = Demo.sendPost("http://localhost:8585/export15xml_frame/.senddatas",
            jsonobject.toJSONString());
        System.out.println(sr);
    }
}

海康威视Fastjson漏洞本地复现:从环境搭建到JNDI注入实战 Fastjson作为广泛使用的Java JSON解析库,其反序列化机制在特定版本中存在安全缺陷。当解析用户可控的JSON数据时,攻击者可通过精心构造的@type参数,触发JNDI(Java命名和目录接口)注入漏洞,导致远程代码执行。这种漏洞在企业级应用,尤其是嵌入式设备如海康威视安防系统中影响深远,因其常运行老旧且难以升级的Java服务。理解其原理不仅有助于漏洞验证与防御,更是掌握Java安全、类加载机制及网络攻防实战的关键。本文以Fastjson 1.2.24为例,详细拆解如何在隔离的虚拟机环境中,精准部 阅读详情

相关推荐

从零搭建Fastjson 1.2.24反序列化漏洞靶场:实战复现JNDI注入攻击链

反序列化是Java等编程语言中将字节流或数据结构还原为对象的核心机制,广泛应用于网络通信、数据持久化等场景。其原理在于通过读取序列化后的数据,重建对象的实例状态。然而,当程序反序列化不可信数据时,若缺乏严格的类型安全检查,攻击者可能构造恶意数据,触发非预期的对象行为,从而形成反序列化漏洞,具有极高的技术价值和危害性。这类漏洞常出现在JSON、XML等数据解析库中,可导致远程代码执行(RCE),是Web安全领域的重点攻防对象。应用场景广泛,涉及API接口、微服务通信、缓存数据处理等。本文聚焦于Java生态中经

weixin_30617797的博客 717

java http get请求传json对象

【代码】java http get请求传json对象。

LiaoZe770的博客 1390

java中http请求,获取json数据的代码示例

有些时候会遇到请求http,获取相应的json或者xml数据,今天整理了一点httpClient请求的示例代码。主要是根据相应的http地址,以及相关秘钥,通过HttpClient去发起请求,获取数据然后后台取解析json或者xml。

java http get post 和 发送json数据请求

HttpUtils 工具类。

somdip的博客 3330

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5130

WIN下使用visual studio 2022安装GMSSL命令行工具

2.1 使用管理员权限打开visual studio(非常重要,否则最后一步 nmake install会失败)右键vs2022,以管理员身份运行即可。2.4 配置环境变量,gmssl可执行程序默认会被安装到如下目录。将如下路径添加到系统环境变量即可。添加后的环境变量如下。2.编译解压后的gmssl源码,编译过程主要参考install.md中的内容,README.md中的步骤不完整。2.2 打开vs2022的命令终端,右键文件,选择在终端中打开。1.下载gmssl源码,解压到相应目录。

qq_45794382的博客 1269

java通过httpClient发送json格式数据请求(GET方式)

java通过 httpclient使用get请求发送json参数

xzj80927的博客 6126

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理

本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。

weixin_42531516的博客 171

java发送post请求传json数据

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClie.

qq_43251098的博客 2万+

VL53L1X vs VL53L0X:激光测距传感器选型指南与性能对比

本文深入对比了VL53L1X与VL53L0X两款激光测距传感器的核心差异。VL53L1X采用区域ToF原理,在抗环境光干扰、最大测距及多目标识别方面优势显著,尤其适合复杂光线与动态场景。文章结合机器人避障、无人机定高等实战场景,提供了清晰的选型决策树,帮助工程师根据测距需求、环境复杂度与系统成本做出最优选择。

weixin_29197699的博客 394

双臂复合机器人眼在手外标定实战:从原理到D435标定流程详解

本文详细解析了双臂复合机器人中眼在手外标定的核心原理与实战流程。通过阐述坐标系转换与AX=XB方程,重点介绍了使用Intel RealSense D435相机进行标定的完整步骤,包括环境搭建、数据采集、计算与验证,并提供了关键的避坑指南,帮助工程师实现相机与机械臂基座间的精确坐标对齐。

weixin_29100927的博客 449

SpringBoot之发送和接收Json格式的HTTP请求

1、添加fastjson的依赖到pom.xml中 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.45</...

Hello_Error 1万+

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3783

Java使用URLConnection以json形式发送POST请求和GET请求

1.以json形式发送请求需要使用json对象封装参数(这里以fastjson封装参数) <!-- json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</ver

小诸葛的博客 3060

C#里用HttpListener实现WEB API接口服务端

本文介绍了一个基于WinForm的HTTP服务实现方案。该方案使用HttpListener类创建了一个支持JSON POST请求处理的轻量级Web服务器,主要特点包括:1) 纯线程方式实现请求监听和处理;2) 提供标准化的JSON响应格式;3) 支持自定义请求处理逻辑;4) 包含完整的日志记录功能。代码示例展示了如何初始化服务、处理不同类型的请求(包括JSON POST),并提供了线程安全的UI更新机制。该实现适用于需要简单HTTP接口的Windows桌面应用程序,可作为程序间通信的基础设施。

大坡3D软件开发 228

使用 Simulink + Simscape Electrical 实现一个三相电压型PWM整流器的仿真模型

三相电压型PWM整流器(Voltage Source PWM Rectifier, VSR)是一种先进的电力电子装置,它不仅可以将交流电转换为直流电,还能实现单位功率因数操作,即输入电流与输入电压同相位。这不仅提高了电网质量,减少了谐波污染,而且提高了整个系统的效率。本文将详细介绍如何使用实现一个三相电压型PWM整流器的仿真模型,并探讨其在单位功率因数下的控制策略和仿真结果。本文详细介绍了如何使用搭建一个三相电压型PWM整流器的仿真模型,并对其在单位功率因数下的控制策略进行了探讨。

amy_mhd的博客 128

【后端实现发送Post请求】在SpringBoot下,以Content-Type:application/json示例

后台(SpringBoot)写工具类来模拟对接口的调用来取得相应参数,其实就是相当于实现PostMan、AirPost之类的工具对后端接口发起请求的功能,本篇是以Post的请求方式,参数以JSON格式封装在请求体中,请求头为application/json,进行示例模拟。......

真的好想再回到那时,可现在能做的只有补救。————个人博客:https://w7h1te.github.io/ 4708

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java spring boot发送HTTP请求

在pom.xml添加以下依赖项 com.alibaba.fastjson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> 直接上代码 //post请求 public static JSONObje

不知道该取什么标题的博客 711

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring Boot项目从Fastjson1升级到Fastjson2实战指南

JSON序列化与反序列化是Java后端开发中处理网络通信和数据交换的基础技术,其核心原理是将内存中的对象结构转换为可传输或存储的字符串格式,反之亦然。这项技术的价值在于实现跨平台、跨语言的数据交互,是构建现代分布式系统和微服务架构的基石。在Java生态中,Fastjson因其高性能和易用性曾被广泛采用,但其1.x版本因AutoType机制引发的安全漏洞问题频发,例如1.2.84等版本虽经修复,但安全风险依然存在。因此,将项目升级至经过彻底重构、默认关闭AutoType且性能更优的Fastjson2,对于提升

weixin_30596735的博客 496

Spring-cloud-openfeign-Main方法调用原生API发送HTTP请求

怀念二抱三抱

文天大人 154

Fastjson漏洞分析与复现

fastjson是阿里巴巴开源的JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式进行持久化了。

未完成的歌~的博客 2348

HTTP网络请求

1.1 需要在代码http请求初始化之前添加。1.2 idea 中需要将jvm 参数设置。1.1.2 代码设置代理属性。// 开启代理---开始。// 开启代理---结束。1.1.1 pom依赖。1.1.3 代码演示。

johnrui的博客 639

java HttpClient学习笔记

配置 Apache HttpClient 5.0 fastjson 下载并解压 范例代码 import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.classic.methods.HttpPost;

weixin_46743223的博客 324

java调用http的工具类_JAVA工具类 [ 调用HTTP 请求 ]

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyrig...

weixin_32336149的博客 153

HttpUtils工具类

HttpUtils工具类 package net.hs.itn.teng.common.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.net.UnknownHostException; import j...

weixin_30825581的博客 185

Fastjson漏洞利用工具解析:从原理到实战防御

Java反序列化漏洞是Web安全领域的常见威胁,其核心原理在于应用在反序列化不可信数据时,可能执行恶意代码。Fastjson作为广泛使用的高性能JSON库,曾因AutoType等特性引发系列高危漏洞,对系统安全构成严重风险。理解反序列化机制、JNDI注入等底层技术,有助于开发更安全的应用程序。在安全测试中,自动化工具能提升漏洞验证效率,但深入掌握漏洞原理与手动利用技巧同样关键。本文以Fastjson_rec_exploit为例,探讨漏洞利用工具的设计思路,并涵盖WAF绕过、不出网利用等实战场景,最终回归到代

weixin_34205826的博客 347
上一篇: org.springframework.dao.ConcurrencyFailureException: StatementCallback 问题排查
下一篇: java文件下载,解决IE、FireFox、Chrome、Safari相关问题,返回下载流有接收端解析(浏览器或者别的接收端)
Walter Sun
博客等级 码龄9年 1726粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值