<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Java安全 - Category - p0l1st&#39;s blog</title>
    <link>https://blog.p0l1st.top/categories/java%E5%AE%89%E5%85%A8/</link>
    <description>p0l1st&#39;s blog</description>
    <generator>Hugo 0.161.1 &amp; FixIt v0.4.5</generator>
    <language>en-us</language>
    <managingEditor>p0l1st@venomsec.org (p0l1st)</managingEditor>
    <webMaster>p0l1st@venomsec.org (p0l1st)</webMaster>
    <lastBuildDate>Mon, 04 May 2026 14:05:53 +0800</lastBuildDate>
    <atom:link href="https://blog.p0l1st.top/categories/java%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>L3HCTF2025 TellMeWhy</title>
      <link>https://blog.p0l1st.top/post/l3hctf2025-tellmewhy/</link>
      <pubDate>Mon, 04 May 2026 14:05:53 +0800</pubDate><author>p0l1st@venomsec.org (p0l1st)</author>
      <guid>https://blog.p0l1st.top/post/l3hctf2025-tellmewhy/</guid>
      <category domain="https://blog.p0l1st.top/categories/java%E5%AE%89%E5%85%A8/">Java安全</category>
      <description>&lt;p&gt;使用了solon框架，存在fastjson2依赖&lt;/p&gt;&#xA;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#39;https://p0l1st.oss-cn-beijing.aliyuncs.com/img/202605041418923.png&#39; alt=&#34;img&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;并且/baby/why路由可以反序列化&lt;/p&gt;&#xA;&lt;p&gt;存在反序列化黑名单&lt;/p&gt;&#xA;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#39;https://p0l1st.oss-cn-beijing.aliyuncs.com/img/202605041418723.png&#39; alt=&#34;img&#34;&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;javax.management.BadAttributeValueExpException&lt;/li&gt;&#xA;&lt;li&gt;javax.swing.event.EventListenerList&lt;/li&gt;&#xA;&lt;li&gt;javax.swing.UIDefaults$TextAndMnemonicHashMap&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;目的是想要过滤可以触发&lt;code&gt;JsonArray.toString&lt;/code&gt;的链子，常见的可以触发toString方法的链子如下：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;XString&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;Hashmap#readobject --&amp;gt; &#xA;    XString#equals --&amp;gt; &#xA;        JSONArray.toString&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;HotSwappableTargetSource&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;HashMap#readObject -&amp;gt; &#xA;    HotSwappableTargetSource#equals -&amp;gt; &#xA;        XString#equals -&amp;gt; &#xA;            JSONArray.toString&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;BadAttributeValueExpException&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;BadAttributeValueExpException#readObject --&amp;gt; &#xA;    JSONArray#toString&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;EventListenerList&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;EventListenerList#readobject --&amp;gt; &#xA;    UndoManager#toString --&amp;gt;&#xA;        Vector#toString --&amp;gt;&#xA;            JSONArray#toString&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;TextAndMnemonicHashMap&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre&gt;&lt;code&gt;hashmap#readObject--&amp;gt;&#xA;    HashMap#putVal--&amp;gt;&#xA;        AbstractMap#equals--&amp;gt;&#xA;            TextAndMnemonicHashMap#get--&amp;gt;&#xA;                JSONArray#toString&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;那么在这里我们可以利用&lt;code&gt;XString&lt;/code&gt;去触发&lt;code&gt;JsonArray.toString&lt;/code&gt;&#xA;或者可以用tabby去跑一下&lt;/p&gt;&#xA;&lt;h1 class=&#34;heading-element&#34; id=&#34;fastjson2原生反序列化&#34;&gt;&lt;span&gt;fastjson2原生反序列化&lt;/span&gt;&#xA;  &lt;a href=&#34;#fastjson2%e5%8e%9f%e7%94%9f%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&lt;p&gt;fastjson2.0.26之前有一条原生反序列化链&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polar靶场-Java</title>
      <link>https://blog.p0l1st.top/post/polar%E9%9D%B6%E5%9C%BA-java/</link>
      <pubDate>Thu, 14 Aug 2025 18:28:34 +0000</pubDate><author>p0l1st@venomsec.org (p0l1st)</author>
      <guid>https://blog.p0l1st.top/post/polar%E9%9D%B6%E5%9C%BA-java/</guid>
      <category domain="https://blog.p0l1st.top/categories/java%E5%AE%89%E5%85%A8/">Java安全</category>
      <description>&lt;h1 class=&#34;heading-element&#34; id=&#34;ezjava&#34;&gt;&lt;span&gt;ezjava&lt;/span&gt;&#xA;  &lt;a href=&#34;#ezjava&#34; class=&#34;heading-mark&#34;&gt;&#xA;    &lt;svg class=&#34;octicon octicon-link&#34; viewBox=&#34;0 0 16 16&#34; version=&#34;1.1&#34; width=&#34;16&#34; height=&#34;16&#34; aria-hidden=&#34;true&#34;&gt;&lt;path d=&#34;m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z&#34;&gt;&lt;/path&gt;&lt;/svg&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h1&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#39;https://p0l1st.oss-cn-beijing.aliyuncs.com/img/202508142105238.png&#39; alt=&#34;img&#34;&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
