fastjson

逆向学习 fastjson 反序列化始末

末鹿安然 提交于 2020-10-03 16:20:40
作者:summersec 本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org 前言    Fastjson这款国内知名的解析json的组件,笔者在此就不多介绍,网络上有很多分析学习fastjson反序列化漏洞文章。笔者在此以一种全新角度从分析payload构造角度出发,逆向学习分析fastjson反序列化漏洞始末。 ps:漏洞学习环境以代码均在上传 Github项目 。 初窥Payload    下面是一段最简单 Fastjson的版本号反序列化--URLDNS 代码,观察发现可以提出一个问题 @type 作用? import com.alibaba.fastjson.JSON; public class urldns { public static void main(String[] args) { // dnslog平台网站:http://www.dnslog.cn/ String payload = "{{\"@type\":\"java.net.URL\",\"val\"" + ":\"http://h2a6yj.dnslog.cn\"}:\"summer\"}"; JSON.parse(payload); } } @type的作用    下面是一段实验代码,帮助理解分析 @type 的由来。

Srping cloud gateway 实现动态路由(MySQL持久化+redis分布式缓存) 最新

落爺英雄遲暮 提交于 2020-10-03 13:29:22
摘要 本文讲解在Spring Cloud 中如何通过MySQL和redis实现动态路由配置,以及路由信息持久化在MySQL中,同时使用Redis作为分布式路由信息缓存。 无广告原文链接: Srping cloud gateway 实现动态路由(MySQL持久化+redis分布式缓存) 正文 Sping Cloud gateway 中自己集成了一套基于配置文件的一套路由规则,该规则需要配置在application.yml/properties文件中,如果在使用配置文件时想要动态化实现路由配置,需要网关结合Spring cloud config一起来使用(路由配置在config配置中心中,随着config修改路由信息,gateway会自动刷新而不需要重启刷新路由)。 本文将会在上述基础之上修改路由的存储方式为MySQL,并且把路由信息缓存在redis中,当数据库中的路由信息发生变化时, 可以主动通知网关去重新加载路由信息。 我们在使用此方法改造前,请去掉您的配置文件中配置的路由规则 注意,本部分代码需要使用的部分依赖为: <!-- ali json依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> <

fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410

狂风中的少年 提交于 2020-09-30 08:35:21
fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410 参考文章: (1)fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410 (2)https://www.cnblogs.com/liuyangfirst/p/8966721.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4432649/blog/4536291

maven 依赖问题踩坑

坚强是说给别人听的谎言 提交于 2020-09-27 09:20:32
common子模块已经移除fastjson controller模块打包的时候还是依然报错 Could not resolve dependencies for project com.xiaomi.mipass:mipass-stats-controller:war:0.0.1-SNAPSHOT: Failure to find com.alibaba:fastjson:jar:1.2.21 in http://xxx/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [Help 1] 这是子模块未deploy的缘故,maven打包的时候看不到,移除操作; 但是编译器idea确当做已经移除处理,所以tree dependency查不出来alibaba:fastjson:jar的依赖情况 两种解决办法: deploy common子模块 在controller的pom文件中引入common子模块中加上 <exclusion> <artifactId> fastjson </artifactId>

这个在阿里内网挨骂的程序员 做出了最受欢迎的开源软件

瘦欲@ 提交于 2020-09-27 04:23:30
2020年6月3日,阿里巴巴的内网热搜忽然挤进一个词——Fastjson,很快,一条关于「Fastjson,我心里永远的痛」被拱上热贴第一名。 大家的吐槽挺含蓄,比如这样: 这张图至今存在我的电脑里,因为这个成为众矢之的的产品,就是我养的娃。 我叫高铁,10年前,我做了一个Java解析库叫做Fastjson。 阿里资深技术专家 高铁 当时写这个,只是因为翻遍了全网,发现一个好用的java解析库都没有。一气之下,就决定自己写一个全世界最快的。 写完最后一行代码,感觉自己是站在落日余晖下的西部牛仔,我的枪筒还冒着烟,耳畔还回响着Biu-Biu~Bang Bang的击打感。 于是我就没羞没臊的给它取了个名字,叫做Fastjson。 程序员的快乐,就是这么朴实无华且枯燥。 很快,这个开源软件被一传十,十传百,B2B,淘宝,支付宝,整个国内Java社区都在用。 很快,大家不但觉得我勇气可嘉,还直接跑来问我,你的勇气是梁静茹全家给的吗? 因为这款产品的漏洞,比我预料的稍微多了一点。 但人家用,对我就是信任,咱不能对不起,所以我坦然接受,也会用周末的时间慢慢来改。 最难忘的,是2017年的春节,距离除夕还有7小时,负责安全的同学给我打电话,Fastjson被人上报了漏洞。 春晚是看不成了,更尴尬的是,亲戚们开始纷纷打听我司的加班费是不是很高。 我只能默默低下头,即使是利用业余时间做出来的产品

Redis SpringBoot 整合

烂漫一生 提交于 2020-08-19 17:15:28
1.首先导入使用Maven导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> 2.在application.properties配置信息 # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=localhost # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password=123456 # 连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=200 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 连接池中的最大空闲连接 spring

SpringCloud返回的是xml格式而非JSON数据

蓝咒 提交于 2020-08-19 15:59:44
一、问题描述: 最近接触eureka,写了一个接口,使用@RestController注解修饰了类,预期是返回json格式的数据,但是结果返回的是xml格式的数据。 二、问题分析: 原因是因为直接或间接引入了 jackson-dataformat-xml 依赖导致的。我这里是因为引入了 spring-cloud-starter-netflix-eureka-client 以及 fastjson 两个包,而这两个依赖里面都包含了 jackson-dataformat-xml 依赖。 三、解决方案: 方案一: 如下图,在依赖中手动排除掉 jackson-dataformat-xml 依赖。 方案二: 在类上使用@RestController 或者 在接口上使用@ResponseBody注解,同时在接口映射的注解中做如下配置: @GetMapping(value = "/list", produces = { "application/json;charset=UTF-8" })。 来源: oschina 链接: https://my.oschina.net/u/4278795/blog/4512337

互联网公司--高级测试工程师面试经验分享

。_饼干妹妹 提交于 2020-08-18 15:04:54
  楼主失业了,最近也面试了几家公司。针对这家公司的面试写一些心得体会吧,希望大家无论什么时候看到,都能觉得有用。   下午2:30的面试,楼主1:40左右到的,我的经验告诉我,下午的面试,不能早于1:30到,影响人家休息。   到达面试公司后,HR安排我到面试间坐下,随后给我倒了一杯水,感觉还是不错的。   一轮面试,就是HR面试,就是自我介绍、离职原因、职业规划等等,接着就是HR介绍公司现有项目情况,福利待遇、作息时间等等。面试完的感觉是HR小姐姐很有激情,她全身心的投入工作,激情满满。她清楚的告知我现有公司的优点和不足之处,我觉得面试都是这样的就好了。   二轮面试,就是技术面试。   问题一:Python自动化测试做过那些?   答:Selenium+python+PO设计模式+HTMLTestRunner;   问题二:元素定位的方法有哪些?   答:find_element_by_Id,by_name,by_class,by_css,by_xpath(用的最多);   问题三:元素定位不到怎么办?   答:3种等待方式,强制等待sleep、隐式等待implicitily_wait(整个页面都可用,在规定时间内,等待网页加载,直到网页加载完成,否则报错)、显式等待WebDriverWait(在规定时间内,等待元素加载,直到元素find,否则报错);   问题四

深入分析序列化和反序列化原理,终于知道serialVersionUID到底有什么用了

情到浓时终转凉″ 提交于 2020-08-18 07:56:59
深入序列化和反序列化原理 一个问题引发的思考 什么是序列化和反序列化 为什么需要序列化 序列化的方式 Java序列化 serialVersionUID的作用 serialVersionUID的两种表现形式 Transient关键字 writeObject和readObject Java序列化特点 Java序列化的缺点 XML序列化 JSON序列化 常用三种序列化方式对比 其他序列化 序列化技术的选型 一个问题引发的思考 下面是一个简单的socket通信demo。 通信数据类: package com . zwx . serialize . demo ; public class SocketUser { public SocketUser ( String id , String name ) { this . id = id ; this . name = name ; } private String id ; private String name ; public String getId ( ) { return id ; } public void setId ( String id ) { this . id = id ; } public String getName ( ) { return name ; } public void setName (

Springboot集成flowable modeler web流程设计器

孤人 提交于 2020-08-16 23:48:14
之前画流程图都是用tomcat启动flowable modeler,但是这样启动就不能在分配任务用户/用户组的时候查询自己系统里的数据。所以现在需要把flowable modeler集成到项目里来。 之前自己也搜索了很多文章,都感觉不是很清晰,可能也是因为我刚接触不久。现在自己集成好了之后,记录一下自己学习的结果。 首先需要创建一个springboot应用,pom文件中引入相关jar包: <properties> <java.version>1.8</java.version> <flowable.version>6.4.1</flowable.version> <lombok.version>1.18.0</lombok.version> <fastjson.version>1.2.9</fastjson.version> </properties> < dependencyManagement > < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-dependencies </ artifactId > < type > pom </ type > < scope > import </ scope > </