2022-卷王杯-happyFastjson
2022-卷王杯-happyFastjson
前言
昨天看了fastjson,因为最近比赛的fastjson出现的有点多。卷王杯Y4出了道fastjson的题目,考点是比较基础的东西,学习一波。
分析
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;public class FlagBean {private int count = 0;private boolean status = false;public String free;public String flab;public FlagBean() {}public String getFree() {return this.free;}public void setFree(String free) {this.free = free;}public Map getMap() {--this.count;return null;}public Map getFlag() {System.out.println("getFlag");++this.count;if (this.count >= 2) {HashMap hashMap = new HashMap();hashMap.put("flag", "flag{123}");return hashMap;} else {HashMap hashMap = new HashMap();hashMap.put("flag", "Hacker? hhd");return hashMap;}}
}
return StringUtils.check(poc) ? JSON.parse(poc).toString() : "Hacker? ";
主要就是fastjson反序列化触发2次getFlag()
方法。
触发getter会想到$ref
,但是被ban掉了,那么就想想办法,怎么在调用JSON.parse
的时候触发getter。
首先是这个:
get开头的方法要求如下:
- 方法名长度大于等于4
- 非静态方法
- 以get开头且第4个字母为大写
- 无传入参数
- 返回值类型继承自Collection Map AtomicBoolean AtomicInteger AtomicLong
只有满足这个要求的getter才会在JSON.parse的时候触发。
但是这才触发1次。
注意到后面return StringUtils.check(poc) ? JSON.parse(poc).toString() : "Hacker? ";
还调用了一次,toString(),跟进去就发现是:
public String toString() {return toJSONString();}
估计大概率还能触发getter了,实际上也确实是这样,最后跟进下去,有2处可能触发getter:
第一处:
第二处:
我的payload:
poc={{"@type":"com.ctfshow.happyfjs.Beans.FlagBean","flag":{"@type":"java.until.Map"}}:"a"}
可以触发3次getFlag,第一次是parse的时候,第二次就是JSON.toJSONString(entryKey)
,因为这时候的objectOrArray
为false,第三次就是serializer.write(entryKey);
。
官方的payload只能触发2次,因为entryKey instanceof Map
为true所以objectOrArray
为true,这样第二次无法触发。
2022-卷王杯-happyFastjson相关推荐
- ctfshow卷王杯部分web
ctfshow卷王杯web部分[easy unserialize&easy web] 文章目录 ctfshow卷王杯web部分[easy unserialize&easy web] e ...
- ctfshow(卷王杯)
easyweb 首先打开界面,just so so , 然后我们查看源码,发现了source 路径直接进去访问 <?php error_reporting(0); if(isset($_GET[ ...
- 公司新来了个00后测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...
内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了"万物皆可卷"的程度. 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是.技术不好的同事,我们可以帮他 ...
- 公司测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业.想要获得更好的待遇和机会,不断提升自己的技能栈成了测试老人迫在眉睫的问题. 不论是面试哪个级别的测试工程师,面试官都会问一句" ...
- 测试部门来了个00后卷王之王,老油条感叹真干不过,但是...
在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是.技术不好的同事,我们可以帮他. 是技术太强的人吗?也不是.技术很强的同事,可遇不可求,向他学习还来不及呢. 真正让人反感的,是技术平 ...
- 公司测试部门来了个00后卷王,老油条感叹真干不过,不过.....
在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是.技术不好的同事,我们可以帮他. 是技术太强的人吗?也不是.技术很强的同事,可遇不可求,向他学习还来不及呢. 真正让人反感的,是技术平 ...
- 2022帆软杯全国高校数据分析与应用联赛来啦!
过完愉快的中秋佳节,是时候来报名一场激动人心的竞赛了.2022帆软杯全国高校数据分析与应用联赛于9月13日正式启动报名啦!还在等什么呢,万元大奖说不定就是你的哦! 2022年 "帆软杯&qu ...
- 卷王拼多多的海外现状如何?
大家好,我是懂电商API的Tina lee . -欢迎收看本期内容- 薅羊毛在全世界的消费者看来,几乎都是不可拒绝的. 近几年,中国电商卷王,拼多多卷完国内大小电商后,去年,拼多多拼进了海外,卷到 ...
- “卷王”英伟达的真面目
GTC 2022过后,广大人民群众纷纷奔走相告,黄仁勋又带着他的新"核弹"来"炸街"了. 具体发布的新产品和技术,很多文章都已经详尽地介绍过了,一言以蔽之:牛! ...
最新文章
- python爬虫 智联招聘 工作地点
- BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】
- [转]手游研发数据专业术语科普 游戏热度跟啥有关
- 【CV秋季划】人脸编辑之统一属性编辑方法视频更新
- 干货 | 算法工程师入门第三期——黄李超讲物体检测
- boost::gil模块数字扩展中的 resize_view() 示例
- 常用Latex表达式符号——组合数学篇
- java学习笔记七——继承
- 越界操作导致程序崩溃的原理
- 计算机毕业设计 HTML+CSS+JavaScript 云南美食网页设计 美食网页介绍代码
- 彻底删除solidworks的方法-清理注册表
- 富文本编辑器Editormd的配置使用
- PYTHON实战:从百度资讯爬取信息作为正文,巨潮资讯网爬取有关PDF作为附件,自动发送邮件(Mysql做存储)
- 国美易卡借助互联网,国美易卡搭建风控、运营、营销体系
- 2021-02-18docker
- 分门别类刷leetcode——链表(C++实现)
- 罗格斯大学电气与计算机工程专业怎么样,罗格斯大学计算机工程排行,千万得细心点听懂...
- 京东店铺所有商品API接口(JD整店商品查询API接口)
- 华为独家承建波兰P4 UMTS网络
- 如何安装正版的Xmanager
热门文章
- R语言使用pf函数生成F分布累积分布函数数据、使用plot函数可视化F分布累积分布函数数据(F Distribution)
- freeradius-aka配置笔记,自用
- 计算机基础word简单面试题,Word、excel、PPT、计算机基础笔试题汇总
- 数据驱动的智能运维平台
- HTML5 五子棋 - JS/Canvas 游戏
- 深度学习读书笔记之RBM
- VueJS之v-bind:key爬坑
- AI day04(2020 8/3)
- 常用DNS列表(电信、网通) 转载
- 【vue学习笔记】vue-cli-service的使用