<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Research | baozongwi's blog</title><link>https://baozongwi.xyz/categories/research/</link><description>Currently exploring Java security and internal network penetration, with CTFs as a hobby.</description><generator>Hugo</generator><language>zh-cn</language><item><title>Java基础内存马</title><link>https://baozongwi.xyz/p/java-memshell-basics/</link><pubDate>Sat, 29 Aug 2026 01:27:26 +0800</pubDate><guid>https://baozongwi.xyz/p/java-memshell-basics/</guid><description>TL;DR 之前把这四种内存马拆开写了，回头翻的时候一直在几个文件之间跳，干脆合到一篇里。这里主要看 Tomcat 收到请求以后到底从哪里取组件，以及我们运行时往哪些对象里塞东西。 这几个 demo 统一使用 Spring Boot 2.7.18、Java 8 和内置 Tomcat 9，代码还是 …</description></item><item><title>DNS 重绑定攻击实践</title><link>https://baozongwi.xyz/p/dns-rebinding-attack/</link><pubDate>Sun, 15 Feb 2026 22:08:20 +0800</pubDate><guid>https://baozongwi.xyz/p/dns-rebinding-attack/</guid><description>😋</description></item><item><title>JNDI 注入绕过高版本 JDK 限制</title><link>https://baozongwi.xyz/p/jndi-injection-bypass-high-version-jdk/</link><pubDate>Mon, 09 Feb 2026 22:03:34 +0800</pubDate><guid>https://baozongwi.xyz/p/jndi-injection-bypass-high-version-jdk/</guid><description>前面学习 JNDI 注入的时候就有阅读过源码，主要有两种手段，一种是通过反序列化绕过，还有一种是直接调用本地的工厂类，环境直接把 8u66 换成 jdk8u202 就行了 在com/sun/jndi/cosnaming/CNCtx.class中可以找到这段代码 static { PrivilegedAction …</description></item><item><title>JNDI注入</title><link>https://baozongwi.xyz/p/jndi-injection/</link><pubDate>Tue, 30 Dec 2025 22:07:18 +0800</pubDate><guid>https://baozongwi.xyz/p/jndi-injection/</guid><description>了解 JNDI (Java Naming and Directory Interface) 注入的核心原理在于 Java 允许通过 JNDI 接口动态加载外部资源（对象）。 当攻击者可以控制 JNDI lookup 函数的参数（URI）时，他们可以将其指向一个恶意的 RMI 或 LDAP 服务。如果被攻击的客户端配置允 …</description></item><item><title>C3P0反序列化</title><link>https://baozongwi.xyz/p/c3p0-deserialization/</link><pubDate>Tue, 16 Dec 2025 00:19:47 +0800</pubDate><guid>https://baozongwi.xyz/p/c3p0-deserialization/</guid><description>C3P0 是一个开源的 JDBC 连接池，它实现了数据源和 JNDI 绑定，支持 JDBC3 规范和 JDBC2 的标准扩展。 关于 JDBC 和 C3P0 的关系，JDBC 就像是 Java 世界里的“交通法规”，它规定了程序和数据库之间该怎么交流。但是，光有法规还不行，还得有人来具体执行和管理。C3P0 就是一个第 …</description></item><item><title>Spring 原生反序列化利用链</title><link>https://baozongwi.xyz/p/spring-native-deserialization-chains/</link><pubDate>Wed, 10 Dec 2025 22:50:56 +0800</pubDate><guid>https://baozongwi.xyz/p/spring-native-deserialization-chains/</guid><description>低版本的我也不懂，我只知道高版本的。 高版本 BadAttributeValueExpException 不能触发 toString 了，寻找一个替换的类，之前学到过在EventListenerList#readObject中有一个 add 方法，会动态加载并监听类，可以触发 toString 方法 后面就是 …</description></item><item><title>高版本 Jdk 反射 &amp; TemplatesImpl</title><link>https://baozongwi.xyz/p/high-jdk-reflection-templatesimpl/</link><pubDate>Wed, 10 Dec 2025 08:50:24 +0800</pubDate><guid>https://baozongwi.xyz/p/high-jdk-reflection-templatesimpl/</guid><description>现在实际的 CTF 其实基本都是高版本反序列化，低版本生活中有，但是也很少了，之前有用过这类知识去解题，但是不太理解为什么，现在来学习下 本文中涉及的 TemplatesImpl 知识并非高版本，因为高版本中需要org.springframework.aop.framework.JdkDynamicAopProxy代理 …</description></item><item><title>Jackson反序列化漏洞</title><link>https://baozongwi.xyz/p/jackson-deserialization/</link><pubDate>Thu, 27 Nov 2025 21:34:40 +0800</pubDate><guid>https://baozongwi.xyz/p/jackson-deserialization/</guid><description>太复杂了😟</description></item><item><title>Jackson基础学习</title><link>https://baozongwi.xyz/p/jackson-basics/</link><pubDate>Thu, 27 Nov 2025 21:25:22 +0800</pubDate><guid>https://baozongwi.xyz/p/jackson-basics/</guid><description>Jackson 是当前 Java 生态中最流行的开源 JSON 框架之一，因其高性能、低内存占用及灵活的扩展性而被选为 Spring MVC 的默认解析器，在处理大文件时速度显著优于 Gson。其核心架构由三个模块组成：底层的 jackson-core 提供高效的流模式解析 …</description></item><item><title>Hessian反序列化</title><link>https://baozongwi.xyz/p/hessian-deserialization/</link><pubDate>Tue, 18 Nov 2025 01:00:59 +0800</pubDate><guid>https://baozongwi.xyz/p/hessian-deserialization/</guid><description>序列化 HessianOutput 和 Hessian2Output 都是抽象类 AbstractHessianOutput 的实现，二者的 writeObject 方法一致，根据传入的 object 的类型，获取对应需要的序列化器，调用序列化器的 writeObject 方法序列化数据。代码如下 public …</description></item></channel></rss>