<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>yhy’s Blog</title>
        <link>https://fireline.fun/</link>
        <description>修道之初，谁不想当剑仙？</description>
        <lastBuildDate>Sun, 10 May 2026 03:57:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, yhy</copyright>
        <item>
            <title><![CDATA[我的「贾维斯」计划：一个安全人的 AI Agent 野望]]></title>
            <link>https://fireline.fun/article/page-36</link>
            <guid>https://fireline.fun/article/page-36</guid>
            <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-31797da545e98018bed3d341c17ba3fa"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-31797da545e98081b869fb38e2736bcc" data-id="31797da545e98081b869fb38e2736bcc"><span><div id="31797da545e98081b869fb38e2736bcc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e98081b869fb38e2736bcc" title="我的「贾维斯」计划：一个安全人的 AI Agent 野望"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>我的「贾维斯」计划：一个安全人的 AI Agent 野望</b></span></span></h2><blockquote class="notion-quote notion-block-31797da545e9803db07bfd76f9714713"><div>如果你看过漫威电影，一定对钢铁侠的 AI 管家「贾维斯」印象深刻——Tony Stark 只需动动嘴，贾维斯就能帮他分析数据、操控装甲、处理一切琐事。</div><div class="notion-text notion-block-31797da545e980059a0edc05017e5fbe">2026 年，OpenClaw 火了。它本身算不上多厉害，但它点燃了一把火——让人突然意识到，现阶段 AI Agent 的想象空间远比我们以为的要大。一时间，各种各样的「龙虾」涌现。</div><div class="notion-text notion-block-31797da545e98056b2a7d9140f80725a">而我也突然意识到：贾维斯，好像真的触手可及了。</div><div class="notion-text notion-block-31797da545e9806999c8d3f10c9974f1">于是，一个压在心底六年的念头，再次翻涌上来。</div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e9807890fcfe4f73284a2b" data-id="31797da545e9807890fcfe4f73284a2b"><span><div id="31797da545e9807890fcfe4f73284a2b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e9807890fcfe4f73284a2b" title="一、咸鱼也有梦想"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>一、咸鱼也有梦想</b></span></span></h3><div class="notion-text notion-block-31797da545e980b483bfe5f8f74026f3">我是 yhy，一个干了六年网络安全的打工人。</div><div class="notion-text notion-block-31797da545e980f28eb5eb65f5838399">我的梦想很简单 ——<b>躺着赚钱</b>。</div><div class="notion-text notion-block-31797da545e98044b3f9fbd4d322835e">具体来说，是让工具替我挖漏洞，让自动化替我提交报告，让 AI 替我 7×24 小时工作，而我，可以安心带娃、打游戏、或者什么都不干。</div><div class="notion-text notion-block-31797da545e980cf8412c492cfbbaf9b">星爷在《少林足球》里说过：<b>「做人如果没有梦想，跟咸鱼有什么分别。」</b></div><div class="notion-text notion-block-31797da545e9804786eed289597f9713">我不想做咸鱼。万一呢？</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e98028ad4cd8dfc5500c1a" data-id="31797da545e98028ad4cd8dfc5500c1a"><span><div id="31797da545e98028ad4cd8dfc5500c1a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e98028ad4cd8dfc5500c1a" title="二、回不去的「黄金时代」"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>二、回不去的「黄金时代」</b></span></span></h3><div class="notion-text notion-block-31797da545e980348c32f1d94c8034ca">说出来你可能不信，我赚最多 SRC 赏金的时候，恰恰是刚入行、还是个小白的时候。</div><div class="notion-text notion-block-31797da545e9807bb9f5d1e69ae68696">那时候我什么都不懂，就靠 lijiejie 大佬开源的 BBScan，一个站一个站地扫，一个洞一个洞地交。拿到过好几次 京东 SRC 月度前十。</div><div class="notion-text notion-block-31797da545e98031abe8e35c61c27ba8">那时候的我，没有自己的工具，没有花哨的技术，只有最朴素的东西——<b>时间</b>，和一股子不怕折腾的劲头。</div><div class="notion-text notion-block-31797da545e980b0bd22ccbda58e3462">然后呢？我毕业了，入行了，工作了。</div><div class="notion-text notion-block-31797da545e9800a9ca4f28695fe6500">我开始想：我要写自己的工具，更强的、更自动化的，到时候挖洞岂不是效率翻倍？</div><div class="notion-text notion-block-31797da545e98034b3a7d9c1735030cd">但现实是——<b>时间没了</b>。</div><div class="notion-text notion-block-31797da545e9802697c5cf32bf73e383">工作占满了白天，加班吞掉了晚上，剩下的零碎时间，要么在写工具，要么在打游戏放松，要么已经累到只想躺平。</div><div class="notion-text notion-block-31797da545e980f8a3bdc4a62d294f6a">我总跟自己说：等等，等我把工具写完，等我忙完这段时间，就开始挖洞。</div><div class="notion-text notion-block-31797da545e9800ba06af2306a2a2f22">等着等着，六年过去了，娃都有了。</div><div class="notion-text notion-block-31797da545e9801d8713e16c1ab186ec">那个「等工具写完就去挖洞」的许诺，成了我给自己开的最大的空头支票。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e980d8b51bf151c6daee3d" data-id="31797da545e980d8b51bf151c6daee3d"><span><div id="31797da545e980d8b51bf151c6daee3d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e980d8b51bf151c6daee3d" title="三、散落在 GitHub 上的「兵器」"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>三、散落在 GitHub 上的「兵器」</b></span></span></h3><div class="notion-text notion-block-31797da545e98023adb5ffbc94f0c770">六年里，我陆陆续续写了不少东西。它们像一把把铸了一半的剑，静静地躺在 GitHub 的仓库里：</div><div class="notion-text notion-block-31797da545e980348125e4b7f2fb0eb0"><b>承影（ChYing）</b> —— 一个类 BurpSuite 的桌面安全测试工具。集成了代理、重放、爆破、编解码、插件等功能。最近刚「复活」重构完毕，并且实现了 MCP 服务接口，可以被外部 Agent 调用。<b>开源维护中。</b></div><div class="notion-text notion-block-31797da545e98069807dc4e43e2222bc"><b>Jie</b> —— 综合性漏洞扫描引擎，支持 XSS、SQL 注入、SSRF、命令执行等主被动扫描，还集成了 Nuclei POC。是承影的扫描核心，也是下面 SScan 的基础依赖。600+ Star。 <b>上次更新是两年前。</b></div><div class="notion-text notion-block-31797da545e980a9a916f0584e6f97cb"><b>SScan</b> —— 资产管理与扫描平台。SScan 是服务端，负责下发任务、查看报告、资产搜索发现；SScan-Agent 是执行端，负责子域名扫描、端口扫描、漏洞扫描等具体任务。<b>未开源，上次更新也是两年前。</b></div><div class="notion-text notion-block-31797da545e9804d92eecebd3d19483a"><b>承影 Agent（ChYing Agent）</b> —— 自动化渗透测试 / CTF Agent。在 2025 腾讯云黑客松智能体挑战赛中拿到了 Top9。<b>只开源了比赛版本。</b></div><div class="notion-text notion-block-31797da545e98040a5d0db512d781111"><b>纯钧（ChunJun Agent）</b> —— 代码审计 Agent，结合大模型自动化审计代码，发现安全漏洞。<b>最近做的项目，未开源。</b></div><div class="notion-text notion-block-31797da545e98089a236eaf19df14bb4"><b>太阿（TaiE）</b> —— 一个类似 OpenClaw 的个人 AI 助手，定位是帮我自动化运营网络安全自媒体：小红书图文、抖音视频、X 上的推文。我的「贾维斯」雏形。<b>私有项目，持续更新中。</b></div><div class="notion-text notion-block-31797da545e9800792e1dd8d4ca7a17f">你可能注意到了，这些工具的名字都来自古代名剑——承影、纯钧、太阿、鱼肠、莫邪……</div><div class="notion-text notion-block-31797da545e9809aa08ad1f87a348766">微信公众号叫「谁不想当剑仙」，不是没有原因的。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e9809b82e3d28ba0e9648a" data-id="31797da545e9809b82e3d28ba0e9648a"><span><div id="31797da545e9809b82e3d28ba0e9648a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e9809b82e3d28ba0e9648a" title="四、AI 这股风，吹活了我的兵器库"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>四、AI 这股风，吹活了我的兵器库</b></span></span></h3><div class="notion-text notion-block-31797da545e98002a9d5d70474287465">去年我重构承影的时候，写过一句话：<b>AI 是个人能力的放大器。</b></div><div class="notion-text notion-block-31797da545e980f28186c0f5d99ace84">那时候我说的是 AI 帮我写前端、做 UI。但现在，我的野心更大了。</div><div class="notion-text notion-block-31797da545e98023b88cd214473e01a9">AI 不只是放大器，它可以是<b>执行者</b>。</div><div class="notion-text notion-block-31797da545e980848875e20912d1897d">其实在 OpenClaw 之前，我已经在用 AI 写各种 Agent 了——承影 Agent、纯钧 Agent、太阿……但它们各自为战，像一把把散落的剑。</div><div class="notion-text notion-block-31797da545e98028aa80e0f152f0555a">OpenClaw 的出现让我把所有的想法串了起来。不是它的技术有多颠覆，而是它让我看到了一个完整的图景：AI Agent 能够自主规划、调用工具、完成复杂任务——所有人都在探索这个边界。</div><div class="notion-text notion-block-31797da545e98012a8dcf23208c453ad">而我突然意识到——这个边界，恰好框住了渗透测试的全流程。</div><div class="notion-text notion-block-31797da545e980579065de382f082f2a">渗透测试本质上就是一系列有逻辑的步骤：信息收集 → 资产发现 → 漏洞扫描 → 漏洞验证 → 深度利用 → 报告提交。每一步都有明确的输入输出，都可以工具化，都可以被 Agent 编排。</div><div class="notion-text notion-block-31797da545e98097baf1cb473800e51a">我之前写的那些工具，每一个都覆盖了其中的某个环节。</div><div class="notion-text notion-block-31797da545e9806fa363f6d303289bb1">它们缺的不只是一个「大脑」把它们串起来——能力也有欠缺，不是每一把剑都磨到了锋利。但没关系，能力可以在太阿的进化中不断补全、迭代。</div><div class="notion-text notion-block-31797da545e98098aaccd29867cf5a8f">重要的是，这个「大脑」来了。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e980a984c1cb525b9f363c" data-id="31797da545e980a984c1cb525b9f363c"><span><div id="31797da545e980a984c1cb525b9f363c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e980a984c1cb525b9f363c" title="五、贾维斯计划"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>五、贾维斯计划</b></span></span></h3><div class="notion-text notion-block-31797da545e98077a7ede08c0458c519">这就是我现在要做的事——</div><div class="notion-text notion-block-31797da545e98013af19d97f9d1637f4"><b>以太阿为核心，打造我自己的「贾维斯」。</b></div><div class="notion-text notion-block-31797da545e980d2bc59cdff1cec7684">具体来说：</div><div class="notion-text notion-block-31797da545e980f2a38fcf74add344cb"><b>鱼肠（YuChang）</b> —— 由 SScan-Agent 改造重命名而来，定位为信息收集与资产扫描 Agent。暴露 MCP 服务接口，可以被其他 Agent 调用，负责子域名扫描、端口扫描、资产发现等任务。<b>当前正在做的改造工作。</b></div><div class="notion-text notion-block-31797da545e9808584f0c74321cffe93"><b>承影（ChYing）</b> —— 已经实现了 MCP 服务接口。负责代理流量捕获与分析、Repeater 重放、Intruder 爆破等交互式测试能力。</div><div class="notion-text notion-block-31797da545e9801186cec350fec0c6a8"><b>承影 Agent（ChYing Agent）</b> —— 自动化渗透测试 Agent。对重点目标进行深度漏洞挖掘和利用。</div><div class="notion-text notion-block-31797da545e9809b85b3e2fd5909e14c"><b>纯钧（ChunJun Agent）</b> —— 代码审计 Agent。发现开源项目或目标应用的代码层面漏洞。</div><div class="notion-text notion-block-31797da545e9800696b6cbd3ebbe6e4c"><b>太阿（TaiE）</b> —— 总指挥，我的「贾维斯」。统一编排上面所有的 Agent 和工具。</div><div class="notion-text notion-block-31797da545e98093b45dfe8b9097e251">工作流程是这样的：</div><div class="notion-text notion-block-31797da545e980009413e7675e008ea5">我只需要告诉太阿一句话：<b>「帮我看看某某 SRC 有没有洞。」</b></div><div class="notion-text notion-block-31797da545e9807dae8dea7879ae69bb">甚至不用这么具体，它可以自己去 HackerOne 上找项目，自己评估哪些目标值得打。</div><div class="notion-text notion-block-31797da545e9801c849ed6a5bb6e86f4">然后：</div><ol start="1" class="notion-list notion-list-numbered notion-block-31797da545e980b8b005ee45774d15d7" style="list-style-type:decimal"><li>太阿调用<b>鱼肠</b>，进行信息收集和资产发现</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-31797da545e9808bad13efaa05f417ca" style="list-style-type:decimal"><li>拿到资产列表后，调用<b>承影</b>进行流量代理和分析</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-31797da545e980288354c3257600417b" style="list-style-type:decimal"><li>根据分析结果，调用<b>承影 Agent</b> 对重点目标进行自动化渗透</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-31797da545e980988890c46df04ea02a" style="list-style-type:decimal"><li>如果目标有开源代码，调用<b>纯钧</b>进行代码审计</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-31797da545e98037bedfcd99efeac93e" style="list-style-type:decimal"><li>发现漏洞后，整理报告，自动提交</li></ol><div class="notion-text notion-block-31797da545e980aeab4cf3fc8ed4f868"><b>全程无需我参与。</b> 我可以在带娃，可以在打游戏，可以在睡觉。</div><div class="notion-text notion-block-31797da545e98065a40bddf2a0235fe8">7×24 小时，只要 Token 吃得消。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e9808f9e4cf040e1df5934" data-id="31797da545e9808f9e4cf040e1df5934"><span><div id="31797da545e9808f9e4cf040e1df5934" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e9808f9e4cf040e1df5934" title="六、能成吗？不知道，但想试试"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>六、能成吗？不知道，但想试试</b></span></span></h3><div class="notion-text notion-block-31797da545e980db8ea1c56719ba5923">你可能会说：这不就是画饼吗？自动化渗透这种事，说了多少年了。</div><div class="notion-text notion-block-31797da545e98020825cdbe70ea75c1c">说实话，我也不知道能不能成。这事我才刚开始做。</div><div class="notion-text notion-block-31797da545e980d08095fa92d62af9c6">自动化渗透的水很深，真实环境比 CTF 复杂太多。随便列几个我现在就能想到的硬骨头：</div><div class="notion-text notion-block-31797da545e980d38826d7382786aadb"><b>环境层面</b>：WAF、验证码、IP 封禁、动态 Token……真实站点的防御不是靶场能模拟的。</div><div class="notion-text notion-block-31797da545e98019a06efb4d10a46395"><b>Agent 层面</b>：模型幻觉导致的误报、有限上下文里关键信息的丢失与记忆、多工具结果的融合验证、走不通时的策略回溯……</div><div class="notion-text notion-block-31797da545e9808ab5b8f16d50ee7b80">这些问题，每一个单拎出来都够折腾很久。我不敢说这个计划一定能实现「躺着赚钱」的美梦。</div><div class="notion-text notion-block-31797da545e9800c8085edb12c66dc2f">但我觉得，现在和以前不一样了：</div><div class="notion-text notion-block-31797da545e980bcaebdcb90d9b31cf3"><b>LLM 的推理能力到了一个新阶段。</b> 以前的自动化工具只能按预设规则跑，遇到非标场景就抓瞎。但现在的大模型能理解上下文、能灵活判断、能处理那些「不在剧本里」的情况。</div><div class="notion-text notion-block-31797da545e9802ebb63df1b9c82447c"><b>MCP 协议让工具互联成为可能。</b> 以前我的每个工具都是孤岛，现在通过 MCP 服务接口，它们可以被任何 Agent 像调 API 一样调用。工具之间的协作，第一次有了统一的语言。</div><div class="notion-text notion-block-31797da545e980be91c6fc1f6948ca98"><b>我已经有了大半个工具链。</b> 从信息收集到漏洞扫描，从流量代理到代码审计，大部分环节我都有现成的工具。虽然不完美，但地基在那里。</div><div class="notion-text notion-block-31797da545e980f68077e2a251f2c4c3">所以，<b>我想试试。</b></div><div class="notion-text notion-block-31797da545e980e68a7bce85129730f9">毕业工作第六个年头了，结合 AI 的能力，我想为我对网络安全的情怀，认真实践一次。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e9803f90defcfe78f8e8e6" data-id="31797da545e9803f90defcfe78f8e8e6"><span><div id="31797da545e9803f90defcfe78f8e8e6" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e9803f90defcfe78f8e8e6" title="七、兵器谱"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>七、兵器谱</b></span></span></h3><div class="notion-text notion-block-31797da545e9808da8c6e2821f398309">最后，整理一下我的「兵器谱」，也算是给自己立个 flag：</div><table class="notion-simple-table notion-block-31797da545e9805aac96e999c34de30a"><tbody><tr class="notion-simple-table-row notion-simple-table-header-row notion-block-31797da545e98095a844e82e7c38b9a1"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>名称</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>定位</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>状态</b></div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e98047bc13c566a1be72ec"><td class="" style="width:120px"><div class="notion-simple-table-cell">剑灵太阿（TaiE）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">核心 AI 助手，总指挥，我的「贾维斯」</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🔨 私有开发中</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e98069a3f5f6fc434db36a"><td class="" style="width:120px"><div class="notion-simple-table-cell">鱼肠（YuChang）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">信息收集与资产扫描 Agent（MCP）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🔨 改造中</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e98045a2fbf6ef2245527a"><td class="" style="width:120px"><div class="notion-simple-table-cell">承影（ChYing）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">类 BurpSuite 安全测试平台（MCP）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ 开源维护中</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e980d8ba7be9841dcbaa8d"><td class="" style="width:120px"><div class="notion-simple-table-cell">承影 Agent</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">自动化渗透 / CTF Agent</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🔨 持续迭代</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e980e6b065e9d925881f51"><td class="" style="width:120px"><div class="notion-simple-table-cell">纯钧（ChunJun）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">代码审计 Agent</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">🔨 私有开发中</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e9806f93e6dac21665cfc7"><td class="" style="width:120px"><div class="notion-simple-table-cell">莫邪（MoYe）</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">WebShell 自动化绕过平台</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">私有</div></td></tr><tr class="notion-simple-table-row notion-block-31797da545e980929109f020de811e42"><td class="" style="width:120px"><div class="notion-simple-table-cell">Jie</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">漏洞扫描引擎</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">✅ 已开源（待复活）</div></td></tr></tbody></table><div class="notion-text notion-block-31797da545e980728d7ee2ee95a8931c">所有名字，都取自古代名剑。</div><div class="notion-text notion-block-31797da545e980de977ac6053d5ef55a">因为我始终相信，好的工具应该像一把好剑——锋利、趁手、有灵性。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-31797da545e9804eaa76f275fd7f3c24" data-id="31797da545e9804eaa76f275fd7f3c24"><span><div id="31797da545e9804eaa76f275fd7f3c24" class="notion-header-anchor"></div><a class="notion-hash-link" href="#31797da545e9804eaa76f275fd7f3c24" title="写在最后"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>写在最后</b></span></span></h3><div class="notion-text notion-block-31797da545e980a5951ee683acb6d716">六年前，我是一个拿着 BBScan 一个站一个站扫的小白，靠蛮力和时间，挤进过 SRC 月度榜单。</div><div class="notion-text notion-block-31797da545e9801f8a56c44964b01419">六年后，我有了一整个兵器库，却再也没有那样的时间。</div><div class="notion-text notion-block-31797da545e9809bb387c85e0fb59515">现在，AI 来了。</div><div class="notion-text notion-block-31797da545e98044bbaae9524b3d15c4">它不会累，不会抱怨，不会说「等一下，我先忙完这段」。</div><div class="notion-text notion-block-31797da545e98090a661ea75756a3f48">它可以替我去做那些我一直想做但没时间做的事。</div><div class="notion-text notion-block-31797da545e980b58afdc7f1bab83e8c">我不知道这个「贾维斯计划」最终能走多远，但我知道——</div><div class="notion-text notion-block-31797da545e98097b9c7ce712adfc3cb"><b>不试一下，我会遗憾。</b></div><div class="notion-text notion-block-31797da545e980c49db4f252a45d0b26">毕竟，做人如果没有梦想，跟咸鱼有什么分别。</div><div class="notion-text notion-block-31797da545e980b9992fc2d76c8e82dd">万一呢？</div><hr class="notion-hr notion-block-31797da545e9802aa4d3f163c5d3ebe6"/><div class="notion-text notion-block-31797da545e9806688e4dce8d34b9a4d"><em>时维丙午，序属孟春，记于「贾维斯」计划启动之初。</em></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[写了很多 Agent 之后，我重新思考了一件事：我们到底在“造什么样的 Agent”？]]></title>
            <link>https://fireline.fun/article/page-35</link>
            <guid>https://fireline.fun/article/page-35</guid>
            <pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[写了很多 Agent 之后，我重新思考了一件事：我们到底在“造什么样的 Agent”？]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2f897da545e980f3be17c682d5baa107"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-2f897da545e9806d9e89ddeef9da9ee0" data-id="2f897da545e9806d9e89ddeef9da9ee0"><span><div id="2f897da545e9806d9e89ddeef9da9ee0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e9806d9e89ddeef9da9ee0" title="写了很多 Agent 之后，我重新思考了一件事：我们到底在“造什么样的 Agent”？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">写了很多 Agent 之后，我重新思考了一件事：我们到底在“造什么样的 Agent”？</span></span></h2><div class="notion-text notion-block-2f897da545e98094be3df85afce17822">最近一段时间，我密集地实现了很多 Agent，从工程执行、安全分析到极具挑战性的 CTF Agent。我用过 LangChain 这样的底层框架，也大量拥抱了像 Claude Code 这样高度“工业化”的 Agent 产品。</div><div class="notion-text notion-block-2f897da545e9802ebf06d35b29385ad9">一开始，我是极其兴奋的。</div><div class="notion-text notion-block-2f897da545e9809584aeecb9912616fc">很多过去需要自己设计、自己兜底的复杂工作，突然“消失”了：</div><ul class="notion-list notion-list-disc notion-block-2f897da545e980d9abe7d36ec77159f1"><li>不用再手写 ReAct 循环；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980b88329caa5abb49f80"><li>不用再操心工具调用的 Schema 和错误处理；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980a1a260ee7362ac13c9"><li>不用再焦虑上下文的裁剪与压缩；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980a8b665e7f28bae2937"><li>写代码、跑命令、修 Bug，Agent 自己就能形成高效闭环。</li></ul><div class="notion-text notion-block-2f897da545e980ff90c4f4f181c44621">那一刻，我甚至产生了一个很“危险”但又无比真实的想法：</div><blockquote class="notion-quote notion-block-2f897da545e980488a0fec14e1a40b02"><div>如果这些“脏活累活”都已经被完美封装，我们还需要去关心 Agent 的“内部结构”吗？</div></blockquote><div class="notion-text notion-block-2f897da545e980a486b1ea36b72e770d">这个问题，我相信每个深入 Agent 开发的工程师，迟早都会遇到。</div><hr class="notion-hr notion-block-2f897da545e980dc9938faf69724da34"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2f897da545e98070a729cf201f4c5be3" data-id="2f897da545e98070a729cf201f4c5be3"><span><div id="2f897da545e98070a729cf201f4c5be3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e98070a729cf201f4c5be3" title="1. 当 Agent 足够“工业化”，我们还需要掌控它的内部吗？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1. 当 Agent 足够“工业化”，我们还需要掌控它的内部吗？</span></span></h3><div class="notion-text notion-block-2f897da545e980fd82a2d1e187941faf">以 Claude Code 为代表的 Coding Agent，其本质已经超越了一个“模型接口”，它是一个完成度极高的<b>工程型智能体</b>。</div><div class="notion-text notion-block-2f897da545e9804ab7e1f3897f03a47c">它具备的能力非常明确：</div><ul class="notion-list notion-list-disc notion-block-2f897da545e980d8a7b4df58e5291bc4"><li>成熟、稳定的 Prompt 结构；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980f4946ff1b06d77fe4d"><li>自动化的工具调度与执行循环；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9804aac6ec942aad93db8"><li>近乎无感的上下文管理机制；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980d5907acee3363e5962"><li>对代码、文件系统、命令行的原生理解力。</li></ul><div class="notion-text notion-block-2f897da545e98053b639efd98355068d">从结果导向看，它只为一件事负责：<b>把事情做成</b>。</div><div class="notion-text notion-block-2f897da545e9805bb17fe7796cc2681d">在我构建 CTF Agent 和安全分析 Agent 的过程中，有相当多的场景，它确实比我自己用 LangChain 拼出来的 Agent 表现得：</div><ul class="notion-list notion-list-disc notion-block-2f897da545e9805a86e5d150401b6c25"><li>更快；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9809e8c36de7c12cbbdd8"><li>更稳；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980f09db5ecb7a9b99617"><li>更省心。</li></ul><div class="notion-text notion-block-2f897da545e98078bdc5d8ade4058356">于是，那个“危险”的想法再次浮现：</div><blockquote class="notion-quote notion-block-2f897da545e980979587c754812c8fe1"><div>如果一个黑盒 Agent 已经能解决 80% 的问题，我们还有必要去触碰那剩下 20% 的“内部构造”吗？</div></blockquote><hr class="notion-hr notion-block-2f897da545e98050a24eea7711bf676b"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2f897da545e980d1a115c78898c11ed4" data-id="2f897da545e980d1a115c78898c11ed4"><span><div id="2f897da545e980d1a115c78898c11ed4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e980d1a115c78898c11ed4" title="2. 问题的本质：我们是在做“一次性工具”，还是在构建“系统能力”？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2. 问题的本质：我们是在做“一次性工具”，还是在构建“系统能力”？</span></span></h3><div class="notion-text notion-block-2f897da545e980ea893cf81398eeb860">我后来意识到，我纠结的并非“用不用 LangChain”，而是一个更深层次的战略选择：</div><blockquote class="notion-quote notion-block-2f897da545e98066a315e30b3278fe47"><div>我正在构建的 Agent，到底只是一个满足当下需求的“一次性工具”，还是未来技术体系中可演进、可沉淀的“系统能力”？</div></blockquote><div class="notion-text notion-block-2f897da545e9802880b1dfabbd7117ca">这两种定位，将直接导向截然不同的技术选型和架构设计。</div><hr class="notion-hr notion-block-2f897da545e9803b894bc11adca7d022"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2f897da545e980d3831ac308cd3d0f24" data-id="2f897da545e980d3831ac308cd3d0f24"><span><div id="2f897da545e980d3831ac308cd3d0f24" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e980d3831ac308cd3d0f24" title="3. “黑盒” vs “白盒”：两种 Agent，两种价值"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3. “黑盒” vs “白盒”：两种 Agent，两种价值</span></span></h3><div class="notion-text notion-block-2f897da545e98008847bd346831fa198">站在现在这个阶段回头看，我更愿意这样区分它们解决的核心问题。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2f897da545e9805cbef4c52900654de5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A785497ca-4d91-4ca6-a150-2fe346ef826e%3A1.png?table=block&amp;id=2f897da5-45e9-805c-bef4-c52900654de5&amp;t=2f897da5-45e9-805c-bef4-c52900654de5" alt="notion image" loading="lazy" decoding="async"/></div></figure><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2f897da545e980caa6c3edf3f72ca638" data-id="2f897da545e980caa6c3edf3f72ca638"><span><div id="2f897da545e980caa6c3edf3f72ca638" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e980caa6c3edf3f72ca638" title="工业化 Agent (黑盒)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>工业化 Agent (黑盒)</b></span></span></h4><div class="notion-text notion-block-2f897da545e98088ac3ccbdb074a7baa">它的本质是<b>强执行</b>，内部推理高度封装，追求明确的结果导向。它更像一个你雇来的“顶尖外包专家”。</div><ul class="notion-list notion-list-disc notion-block-2f897da545e980cc8e9ef4050146c929"><li>你给目标；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980ddae9ef9f3e73e0d35"><li>它自己探索路径、编写代码、修正错误；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980e3bd48d727f2a15ffd"><li>最后交付结果。</li></ul><div class="notion-text notion-block-2f897da545e980e892a2decf88e0f9d7">你无需理解其内部心智，只关心结果是否达成。对于追求快速解题、拿到结果的场景，它几乎是<b>最优解</b>。</div><div class="notion-text notion-block-2f897da545e9807ab707d5bcab19f33f">它完美地回答了这个问题：</div><blockquote class="notion-quote notion-block-2f897da545e9809aa2e4eef766dd9863"><div>How to execute? (如何把事情做成？)</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2f897da545e9807ba6c2f74349b6eba3" data-id="2f897da545e9807ba6c2f74349b6eba3"><span><div id="2f897da545e9807ba6c2f74349b6eba3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e9807ba6c2f74349b6eba3" title="框架型 Agent (白盒)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>框架型 Agent (白盒)</b></span></span></h4><div class="notion-text notion-block-2f897da545e9800cbd61d601c28ce86c">它的本质是<b>强控制</b>，允许你将 Agent 的能力，用一种完全透明、可控的方式实现出来。它更像一套“能力的实现蓝图”。</div><ul class="notion-list notion-list-disc notion-block-2f897da545e9801c8533d529a8527b19"><li>决策逻辑是显式的；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9803ba290ef0ddfa4552f"><li>状态与上下文是可控的；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e98023a1c1fcea9e700156"><li>行为路径是可复现、可审计的；</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9806aaba2df987fe2e9a9"><li>过程中产生的“中间产物”是可结构化、可沉淀的。</li></ul><div class="notion-text notion-block-2f897da545e980a7b1acf8443daecc49">它让你能清晰地回答这个问题：</div><blockquote class="notion-quote notion-block-2f897da545e98096bd69c3abd950c997"><div>What to do next, and why? (下一步做什么，以及为什么？)</div></blockquote><div class="notion-text notion-block-2f897da545e980909d79e7f89cd6da1a">在严肃的安全和企业级场景里，这种控制权一旦拥有，就再也无法放弃。因为我们关心的不再只是最终输出，更是 Agent 在过程中产生的所有“中间产物”，例如：<b>可审计的决策链、可复用的知识资产、可迭代的系统行为</b>。</div><hr class="notion-hr notion-block-2f897da545e980db9c7ef2d9df4a8efa"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2f897da545e98038827ae07b6b01362a" data-id="2f897da545e98038827ae07b6b01362a"><span><div id="2f897da545e98038827ae07b6b01362a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e98038827ae07b6b01362a" title="4. 我的选择：走向“分层架构”，而非“二选一”"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4. 我的选择：走向“分层架构”，而非“二选一”</span></span></h3><div class="notion-text notion-block-2f897da545e9802db26ff75e2e8c94e6">所以我最终的判断是：</div><blockquote class="notion-quote notion-block-2f897da545e980d389d9f71920efb735"><div>不要在「LangChain vs 工业化 Agent」之间站队。真正成熟的 Agent 架构，一定是分层的。</div></blockquote><div class="notion-text notion-block-2f897da545e9802b8426f6c769f4d95e">我现在认可并实践的形态是：</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2f897da545e980f7a276d4f12fd71368" data-id="2f897da545e980f7a276d4f12fd71368"><span><div id="2f897da545e980f7a276d4f12fd71368" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e980f7a276d4f12fd71368" title="上层：战略与编排层 (The &quot;Why&quot;)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>上层：战略与编排层 (The &quot;Why&quot;)</b></span></span></h4><ul class="notion-list notion-list-disc notion-block-2f897da545e9807c9630c526951679ad"><li><b>核心职责</b>：决策、规划、审计、沉淀。这是 Agent 的“大脑”和“灵魂”。</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980a3bfc1efd2a86ac89a"><li><b>技术实现</b>：使用 LangChain / LangGraph 等框架，显式地定义业务逻辑、状态机、记忆结构和风控规则。</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9808a82e1c0b2803afccb"><li><b>控制权</b>：完全掌握在我们自己手中。</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2f897da545e9803c83ebf086e9477a40" data-id="2f897da545e9803c83ebf086e9477a40"><span><div id="2f897da545e9803c83ebf086e9477a40" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e9803c83ebf086e9477a40" title="下层：能力与执行层 (The &quot;How&quot;)"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>下层：能力与执行层 (The &quot;How&quot;)</b></span></span></h4><ul class="notion-list notion-list-disc notion-block-2f897da545e980349f72df1f83a158b1"><li><b>核心职责</b>：高效、稳定地完成具体任务。这是 Agent 强有力的“双手”。</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9802eaa57d65e0fed7d11"><li><b>技术实现</b>：将工业化的 Agent（如 Claude Code）封装成一个“超级工具”。</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e980499954e359246dbca6"><li><b>控制权</b>：我们将具体的执行过程“外包”出去，只关心输入和输出。</li></ul><div class="notion-text notion-block-2f897da545e98084974ad5f42120687b">在 CTF Agent 的实践中，这意味着：</div><ul class="notion-list notion-list-disc notion-block-2f897da545e98023a4dbdc237f2d4ecb"><li><b>“这局该怎么打？”</b> —— 这个战略问题，由我控制的“编排层”来回答。</li></ul><ul class="notion-list notion-list-disc notion-block-2f897da545e9805988acc3143bd1a1d9"><li><b>“把这一步给我跑通！”</b> —— 这个执行问题，则交给“执行层”的 Agent 来解决。</li></ul><div class="notion-text notion-block-2f897da545e980acb3bce8bc92d3fa84">这样既不会重复造轮子去实现一个通用的代码执行器，也不会把系统的核心战略完全外包给一个不可控的黑盒。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2f897da545e980ffa0c2c61df1fc8817"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A7917fe79-55cb-4a12-b978-ede1a3bb924b%3A2.png?table=block&amp;id=2f897da5-45e9-80ff-a0c2-c61df1fc8817&amp;t=2f897da5-45e9-80ff-a0c2-c61df1fc8817" alt="notion image" loading="lazy" decoding="async"/></div></figure><hr class="notion-hr notion-block-2f897da545e980a0a0f9f76d468b522d"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2f897da545e980e7aec2eab079846744" data-id="2f897da545e980e7aec2eab079846744"><span><div id="2f897da545e980e7aec2eab079846744" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2f897da545e980e7aec2eab079846744" title="5. 最终，我们关心的问题变了"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">5. 最终，我们关心的问题变了</span></span></h3><div class="notion-text notion-block-2f897da545e980a8836ccd7043d4641e">最初，我们关心的是：<b>“这一次能不能跑通？”</b></div><div class="notion-text notion-block-2f897da545e980feac4be2159f05b87c">现在，我相信更重要的问题是：</div><blockquote class="notion-quote notion-block-2f897da545e980cf838dd8379033aba9"><div>我们今天构建的这个 Agent，在半年后、一年后，是否还能被我们自己、被其他人轻易地理解、维护和迭代？它是在消耗价值，还是在沉淀数字资产？</div></blockquote><div class="notion-text notion-block-2f897da545e9803b868dc7ad5dca7f12">Claude Code 这样的产品是“能力放大器”，而 LangChain 这样的框架是“能力构建器”。</div><div class="notion-text notion-block-2f897da545e9804fa182d20c0a63ac48">想清楚我们到底在“造什么样的 Agent”，比选择用哪个工具，要重要得多。</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[7天，Top 9：我如何让 Claude 手搓一个全自动 CTF 选手]]></title>
            <link>https://fireline.fun/article/page-33</link>
            <guid>https://fireline.fun/article/page-33</guid>
            <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[7天时间，我没有写一行核心代码，而是让 Claude 帮我造了一个会打 CTF 的 AI。"
腾讯云黑客松 · 智能渗透挑战赛 第 9 名]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2ed97da545e98064bc5eea3540aaeb5c"><div class="notion-viewport"></div><div class="notion-collection-page-properties"><div class="notion-collection-row"><div class="notion-collection-row-body"><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 13A6 6 0 107 1a6 6 0 000 12zM3.751 5.323A.2.2 0 013.909 5h6.182a.2.2 0 01.158.323L7.158 9.297a.2.2 0 01-.316 0L3.751 5.323z"></path></svg><div class="notion-collection-column-title-body">type</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-select"><div class="notion-property-select-item notion-item-purple">Post</div></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 13A6 6 0 107 1a6 6 0 000 12zM3.751 5.323A.2.2 0 013.909 5h6.182a.2.2 0 01.158.323L7.158 9.297a.2.2 0 01-.316 0L3.751 5.323z"></path></svg><div class="notion-collection-column-title-body">status</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-select"><div class="notion-property-select-item notion-item-red">Published</div></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M10.889 5.5H3.11v1.556h7.778V5.5zm1.555-4.444h-.777V0H10.11v1.056H3.89V0H2.333v1.056h-.777c-.864 0-1.548.7-1.548 1.555L0 12.5c0 .856.692 1.5 1.556 1.5h10.888C13.3 14 14 13.356 14 12.5V2.611c0-.855-.7-1.555-1.556-1.555zm0 11.444H1.556V3.944h10.888V12.5zM8.556 8.611H3.11v1.556h5.445V8.61z"></path></svg><div class="notion-collection-column-title-body">date</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-date">Dec 2, 2025</span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 4.568a.5.5 0 00-.5-.5h-6a.5.5 0 00-.5.5v1.046a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4.568zM.5 1a.5.5 0 00-.5.5v1.045a.5.5 0 00.5.5h12a.5.5 0 00.5-.5V1.5a.5.5 0 00-.5-.5H.5zM0 8.682a.5.5 0 00.5.5h11a.5.5 0 00.5-.5V7.636a.5.5 0 00-.5-.5H.5a.5.5 0 00-.5.5v1.046zm0 3.068a.5.5 0 00.5.5h9a.5.5 0 00.5-.5v-1.045a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5v1.045z"></path></svg><div class="notion-collection-column-title-body">slug</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-text">page-33</span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 4.568a.5.5 0 00-.5-.5h-6a.5.5 0 00-.5.5v1.046a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4.568zM.5 1a.5.5 0 00-.5.5v1.045a.5.5 0 00.5.5h12a.5.5 0 00.5-.5V1.5a.5.5 0 00-.5-.5H.5zM0 8.682a.5.5 0 00.5.5h11a.5.5 0 00.5-.5V7.636a.5.5 0 00-.5-.5H.5a.5.5 0 00-.5.5v1.046zm0 3.068a.5.5 0 00.5.5h9a.5.5 0 00.5-.5v-1.045a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5v1.045z"></path></svg><div class="notion-collection-column-title-body">summary</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-text">7天时间，我没有写一行核心代码，而是让 Claude 帮我造了一个会打 CTF 的 AI。&quot;
腾讯云黑客松 · 智能渗透挑战赛 <b>第 9 名</b></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M4 3a1 1 0 011-1h7a1 1 0 110 2H5a1 1 0 01-1-1zm0 4a1 1 0 011-1h7a1 1 0 110 2H5a1 1 0 01-1-1zm0 4a1 1 0 011-1h7a1 1 0 110 2H5a1 1 0 01-1-1zM2 4a1 1 0 110-2 1 1 0 010 2zm0 4a1 1 0 110-2 1 1 0 010 2zm0 4a1 1 0 110-2 1 1 0 010 2z"></path></svg><div class="notion-collection-column-title-body">tags</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-multi_select"><div class="notion-property-multi_select-item notion-item-yellow">开源工具</div><div class="notion-property-multi_select-item notion-item-pink">工具</div><div class="notion-property-multi_select-item notion-item-blue">安全工具</div><div class="notion-property-multi_select-item notion-item-green">开发</div><div class="notion-property-multi_select-item notion-item-blue">AI agent</div></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 13A6 6 0 107 1a6 6 0 000 12zM3.751 5.323A.2.2 0 013.909 5h6.182a.2.2 0 01.158.323L7.158 9.297a.2.2 0 01-.316 0L3.751 5.323z"></path></svg><div class="notion-collection-column-title-body">category</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-select"><div class="notion-property-select-item notion-item-orange">AI Agent</div></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 4.568a.5.5 0 00-.5-.5h-6a.5.5 0 00-.5.5v1.046a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4.568zM.5 1a.5.5 0 00-.5.5v1.045a.5.5 0 00.5.5h12a.5.5 0 00.5-.5V1.5a.5.5 0 00-.5-.5H.5zM0 8.682a.5.5 0 00.5.5h11a.5.5 0 00.5-.5V7.636a.5.5 0 00-.5-.5H.5a.5.5 0 00-.5.5v1.046zm0 3.068a.5.5 0 00.5.5h9a.5.5 0 00.5-.5v-1.045a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5v1.045z"></path></svg><div class="notion-collection-column-title-body">icon</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-text"></span></div></div><div class="notion-collection-row-property"><div class="notion-collection-column-title"><svg viewBox="0 0 14 14" class="notion-collection-column-title-icon"><path d="M7 4.568a.5.5 0 00-.5-.5h-6a.5.5 0 00-.5.5v1.046a.5.5 0 00.5.5h6a.5.5 0 00.5-.5V4.568zM.5 1a.5.5 0 00-.5.5v1.045a.5.5 0 00.5.5h12a.5.5 0 00.5-.5V1.5a.5.5 0 00-.5-.5H.5zM0 8.682a.5.5 0 00.5.5h11a.5.5 0 00.5-.5V7.636a.5.5 0 00-.5-.5H.5a.5.5 0 00-.5.5v1.046zm0 3.068a.5.5 0 00.5.5h9a.5.5 0 00.5-.5v-1.045a.5.5 0 00-.5-.5h-9a.5.5 0 00-.5.5v1.045z"></path></svg><div class="notion-collection-column-title-body">password</div></div><div class="notion-collection-row-value"><span class="notion-property notion-property-text"></span></div></div></div></div></div><div class="notion-callout notion-gray_background_co notion-block-2ed97da545e980e3ba49d32ed3d7a89f"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="😀">😀</span></div><div class="notion-callout-text">这里写文章的前言：
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么？并简述你给出的答案。<div class="notion-text notion-block-2ed97da545e980ddbbc9c0607bc5da9c">可以说说你的故事：阻碍、努力、结果成果，意外与转折。</div></div></div><div class="notion-blank notion-block-2ed97da545e9804cab8ffb60820e670d"> </div><div class="notion-blank notion-block-2ed97da545e98052a851dd440c50c6d1"> </div><blockquote class="notion-quote notion-block-2ed97da545e980fabc77fcd98e955106"><div>腾讯云黑客松比赛专用版本 在 <a class="notion-link" href="https://github.com/yhy0/CHYing-agent/tree/tx-tch" target="_blank" rel="noopener noreferrer">https://github.com/yhy0/CHYing-agent/tree/tx-tch</a> 分支</div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-2ed97da545e980efa400d694bae03664" data-id="2ed97da545e980efa400d694bae03664"><span><div id="2ed97da545e980efa400d694bae03664" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980efa400d694bae03664" title="快速开始"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>快速开始</b></span></span></h3><div class="notion-text notion-block-2ed97da545e98022b18be86690ef8687">详见 <b><a class="notion-link" href="https://github.com/yhy0/CHYing-agent/blob/main/QUICKSTART.md" target="_blank" rel="noopener noreferrer">QUICKSTART.md</a></b></div><hr class="notion-hr notion-block-2ed97da545e980408cb9f99397da6282"/><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e9805b8debcdb4b37e0d89"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Ade23ee75-6cd8-4053-9450-afab29194123%3Atch.png?table=block&amp;id=2ed97da5-45e9-805b-8deb-cdb4b37e0d89&amp;t=2ed97da5-45e9-805b-8deb-cdb4b37e0d89" alt="notion image" loading="lazy" decoding="async"/></div></figure><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-2ed97da545e98052961cf57574fa8da4" data-id="2ed97da545e98052961cf57574fa8da4"><span><div id="2ed97da545e98052961cf57574fa8da4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e98052961cf57574fa8da4" title="7天Top 9：我如何让 Claude 手搓一个全自动 CTF 选手"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>7天Top 9：我如何让 Claude 手搓一个全自动 CTF 选手</b></span></span></h2><blockquote class="notion-quote notion-block-2ed97da545e980f3a392faa94af8df65"><div>&quot;7天时间，我没有写一行核心代码，而是让 Claude 帮我造了一个会打 CTF 的 AI。&quot;</div><div class="notion-text notion-block-2ed97da545e98004aceade3c25c9118e">腾讯云黑客松 · 智能渗透挑战赛 <b>第 9 名</b></div><div class="notion-text notion-block-2ed97da545e980a5adf0c2e0d06a57b8">没有复杂的 MCP 工具链，没有精心封装的工具库。这是一份关于「少即是多」的实战报告：为什么三个工具就够 AI 打 CTF？</div></blockquote><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e98054b346cf2a11ab4035"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://img.shields.io/badge/LangGraph-Multi--Agent-blue?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=2ed97da5-45e9-8054-b346-cf2a11ab4035" alt="LangGraph" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980b7963fd242f109762b"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://img.shields.io/badge/Python-3.11+-green?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=2ed97da5-45e9-80b7-963f-d242f109762b" alt="Python" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e9807284c3f5b7b320ac5e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://img.shields.io/badge/LLM-DeepSeek-purple?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=2ed97da5-45e9-8072-84c3-f5b7b320ac5e" alt="DeepSeek" loading="lazy" decoding="async"/></div></figure><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980019ae5c3795a17881f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://img.shields.io/badge/License-MIT-yellow?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=2ed97da5-45e9-8001-9ae5-c3795a17881f" alt="License" loading="lazy" decoding="async"/></div></figure><hr class="notion-hr notion-block-2ed97da545e9807d896ec9de0ac1ae83"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e9807da3e2fb7e0358f676" data-id="2ed97da545e9807da3e2fb7e0358f676"><span><div id="2ed97da545e9807da3e2fb7e0358f676" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9807da3e2fb7e0358f676" title="核心亮点：AI 构建 AI Agent"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>核心亮点：AI 构建 AI Agent</b></span></span></h3><div class="notion-text notion-block-2ed97da545e980869692fe67fa09b44e"><b>这个项目本身就是 AI 能力的最佳证明。</b></div><div class="notion-text notion-block-2ed97da545e980fa940cf12093df1b2f">ChYing Agent 是一个「AI 辅助 AI」的产物。作为选手，我负责提供专业的渗透思路和架构设计，而具体的代码实现，大部分由 Claude 根据比赛文档和设计指令完成。</div><div class="notion-text notion-block-2ed97da545e98024b088f0305b0db26d"><b>用好 AI，是个人能力的放大器</b>。</div><hr class="notion-hr notion-block-2ed97da545e980d8b5e4c20d445ad12d"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e98076a8d1db91bd67caae" data-id="2ed97da545e98076a8d1db91bd67caae"><span><div id="2ed97da545e98076a8d1db91bd67caae" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e98076a8d1db91bd67caae" title="赛前"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>赛前</b></span></span></h3><div class="notion-text notion-block-2ed97da545e980038640ee95212be4a7">报名时，我最初想搞一个「豪华」的多 Agent 系统，配一堆本地工具和 MCP 接口，把所有输出格式化好喂给模型。</div><div class="notion-text notion-block-2ed97da545e980d78323f87202a6cc49">后来看到 <b><a class="notion-link" href="https://github.com/westonbrown/Cyber-AutoAgent" target="_blank" rel="noopener noreferrer">Cyber-AutoAgent</a></b> 直接把 Kali 挂进来用，我才意识到：何必造那么多半残废的小轮子？不如把复杂度交给 LLM，让它直接用 Kali 里的各种工具、自己写 Python 脚本——这才和现实世界一致。</div><div class="notion-text notion-block-2ed97da545e980e981f2d10d947d7533">所以在比赛前一晚，我让 Claude 帮我把架构整个重写了一遍：从多 Agent 收敛成一个清晰的单 Agent 主流程，去掉一大堆臃肿的工具封装，把决策权尽量交给模型。</div><div class="notion-text notion-block-2ed97da545e980f78fefd95ce86fe49e">做出一个 demo 题验证逻辑没问题后，周一比赛开始就直接上赛场。第一天的成绩有点出乎预料——本来想着重在参与，玩一玩，没想到上午最高冲到了第 4 名，结束时排第 8。</div><div class="notion-text notion-block-2ed97da545e980d59dfedc83cecb34af">这个结果让我确认了一件事：<b>这套打法是可行的，甚至很有潜力</b>。所以我才决定接下来几天继续在这个架构上深挖。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e980a39aa6e16e0775b939" data-id="2ed97da545e980a39aa6e16e0775b939"><span><div id="2ed97da545e980a39aa6e16e0775b939" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980a39aa6e16e0775b939" title="设计思路"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>设计思路</b></span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e980ca95a3f8cdb6e04c6f" data-id="2ed97da545e980ca95a3f8cdb6e04c6f"><span><div id="2ed97da545e980ca95a3f8cdb6e04c6f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980ca95a3f8cdb6e04c6f" title="双 Agent 协作架构：顾问与主攻手的分工（核心机制）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">双 Agent 协作架构：顾问与主攻手的分工（核心机制）</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980608f6ee7e0f6535b11"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A964425c4-6c06-4e7d-b7ed-3ace3393491d%3A1.png?table=block&amp;id=2ed97da5-45e9-8060-8f6e-e7e0f6535b11&amp;t=2ed97da5-45e9-8060-8f6e-e7e0f6535b11" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-2ed97da545e9807d85afe541cc44bc1f">与其他选手不同，我设计了一个<b>顾问 Agent</b>——它不直接执行命令，只负责提供建议。为什么这样设计？</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e980d08098ea105adbbcb4" data-id="2ed97da545e980d08098ea105adbbcb4"><span><div id="2ed97da545e980d08098ea105adbbcb4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980d08098ea105adbbcb4" title="问题：长对话带来的幻觉"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题：长对话带来的幻觉</span></span></h4><div class="notion-text notion-block-2ed97da545e980b2a24adf00839b4259">在平时用各种 LLM 写代码时，我发现总是存在一个问题：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e98076aa3efed07fbae939"><li>对话轮次一多、上下文一长，模型开始幻觉、夸大、脑补不存在的接口和结果</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98051b331cd6ae976b421"><li><b>它会越来越自信，但不一定越来越正确</b></li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e9801b8323d277f9b799c0" data-id="2ed97da545e9801b8323d277f9b799c0"><span><div id="2ed97da545e9801b8323d277f9b799c0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9801b8323d277f9b799c0" title="我的日常做法：多轮 Review"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">我的日常做法：多轮 Review</span></span></h4><div class="notion-text notion-block-2ed97da545e980eba411d731930edcdf">我几乎从不「盲信」模型的每一次回答：</div><ol start="1" class="notion-list notion-list-numbered notion-block-2ed97da545e980caac88efe664314d59" style="list-style-type:decimal"><li>先让模型写出方案或代码</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-2ed97da545e980938ef2c543d664e911" style="list-style-type:decimal"><li>我人工审一遍结论</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-2ed97da545e9802a9117c3dce06340d6" style="list-style-type:decimal"><li>人工不确定的地方提出来再让模型自我 review 一遍</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-2ed97da545e9806fb580f55a1b4ef099" style="list-style-type:decimal"><li>有时再拉另一个模型做交叉 review</li></ol><div class="notion-text notion-block-2ed97da545e980b58e18d2ae38ba3aa9">这套「人 + 多模型 review」的流程，帮我揪出了很多隐藏问题。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e9809ca269e5c5d9c88875" data-id="2ed97da545e9809ca269e5c5d9c88875"><span><div id="2ed97da545e9809ca269e5c5d9c88875" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9809ca269e5c5d9c88875" title="比赛中的落地：顾问 Agent"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">比赛中的落地：顾问 Agent</span></span></h4><div class="notion-text notion-block-2ed97da545e9806f88fbc63145a8dbc8">我希望把这套经验固化成系统能力，而不是靠人肉盯盘，而且比赛期间也不允许人来参与干扰 agent 的运行（断网模式，只能通过排行榜变化来猜测 Agent 的状态）。所以我引入了一个专门的顾问 Agent：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e980ec90e2e2ef48c50f6f"><li>不直接调用工具，只负责站在更高一层审视当前策略</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9802b815bd28969724bf3"><li>当主 Agent 对同一道题的对话轮次过多，或者主动求助时，顾问介入</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980abbc14cdf7082bb4ea"><li>给出不同视角的分析和建议，帮助打破思维定势、压低长对话下的幻觉风险</li></ul><div class="notion-text notion-block-2ed97da545e9803a8521f7cff425c9b3">这个设计其实还打算模拟现实 CTF 组队的场景：多人协作、头脑风暴、各有所长。<b>多 LLM 协作，防止单模型陷入牛角尖。</b></div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e980f6949aea3acf603916" data-id="2ed97da545e980f6949aea3acf603916"><span><div id="2ed97da545e980f6949aea3acf603916" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980f6949aea3acf603916" title="核心思想：「不完全信任」的工程哲学"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">核心思想：「不完全信任」的工程哲学</span></span></h4><div class="notion-text notion-block-2ed97da545e9804380dff70961edfef1">这个双 Agent 设计背后，是我在比赛中形成的一个核心工程哲学：<b>对 LLM 保持「不完全信任」</b>。</div><div class="notion-text notion-block-2ed97da545e980fb9c23f80663d7d269">这不是对 AI 能力的否定，而是一种务实的工程态度。</div><blockquote class="notion-quote notion-block-2ed97da545e98061a3a4f0fc1c42c7cd"><div>关于 AI 能力边界的思考</div><div class="notion-text notion-block-2ed97da545e980269593fc77ffb8b7a7">这一观点深受 <b><a class="notion-link" href="https://mp.weixin.qq.com/s/HaazAEMGqH1GBTmn9qI73g" target="_blank" rel="noopener noreferrer">AI for Coding</a></b> 一文的启发：</div><div class="notion-text notion-block-2ed97da545e98071930ed2721ca88d59"><b>AI 擅长解决「已知的未知」</b>（你没写过，但世界上有人写过的问题）；<b>它无法解决「未知的未知」</b>（完全孤立的业务逻辑或物理世界的全新问题）。</div><div class="notion-text notion-block-2ed97da545e9806abbe8f766a9af2880">CTF 题目恰好大多属于前者：漏洞类型是已知的，攻击手法是有迹可循的，这正是 LLM 能发挥作用的领域。</div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e9800dad0fe95f80f372d0" data-id="2ed97da545e9800dad0fe95f80f372d0"><span><div id="2ed97da545e9800dad0fe95f80f372d0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9800dad0fe95f80f372d0" title="顾问的介入时机"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">顾问的介入时机</span></span></h4><div class="notion-text notion-block-2ed97da545e9800ba3eacba76f242467">顾问介入有 4 种触发机制：</div><ol start="1" class="notion-list notion-list-numbered notion-block-2ed97da545e980e69723db85aec49d66" style="list-style-type:decimal"><li><b>任务开始时</b>：顾问提供初始建议，避免盲目尝试</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-2ed97da545e98065974de1670ea7fb78" style="list-style-type:decimal"><li><b>连续失败时</b>：失败 3 次、6 次、9 次时，顾问重新评估策略</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-2ed97da545e9803b8749ec4bdd9a52cb" style="list-style-type:decimal"><li><b>定期咨询</b>：每 5 次尝试定期咨询，防止主攻手陷入思维定式</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-2ed97da545e980e3bd33d585b5e80b09" style="list-style-type:decimal"><li><b>主动求助</b>：LLM 自己意识到卡住了，主动请求顾问介入</li></ol><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980078f52e8786bf14672"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A8df3b46b-75db-4693-8344-39c9963285e0%3A2.png?table=block&amp;id=2ed97da5-45e9-8007-8f52-e8786bf14672&amp;t=2ed97da5-45e9-8007-8f52-e8786bf14672" alt="notion image" loading="lazy" decoding="async"/></div></figure><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e9805dbcacdb7cb9a6b5fe" data-id="2ed97da545e9805dbcacdb7cb9a6b5fe"><span><div id="2ed97da545e9805dbcacdb7cb9a6b5fe" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9805dbcacdb7cb9a6b5fe" title="工具体系：让 LLM 自己选武器"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>工具体系：让 LLM 自己选武器</b></span></span></h3><div class="notion-text notion-block-2ed97da545e9801f84fdd11fad4fb7c2">我设计了三类工具：</div><ol start="1" class="notion-list notion-list-numbered notion-block-2ed97da545e9805ba9c4c9e5ca885c21" style="list-style-type:decimal"><li><b>Kali Docker 工具</b>：sqlmap、ffuf、curl 等专业渗透工具，开箱即用</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-2ed97da545e980c38fd2ed9ae1f81cd6" style="list-style-type:decimal"><li><b>Python 脚本执行</b>：很多漏洞利用需要多步组合（构造 payload、发送请求、解析响应），用 Python 脚本处理更灵活，而且 LLM 写 Python 的能力很强。原本计划用 Microsandbox 沙箱，但比赛云环境不支持，最后也是在 Docker 里执行 Python——核心能力没变：<b>LLM 想写什么代码就写什么代码</b></li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-2ed97da545e98008872ef7804e921320" style="list-style-type:decimal"><li><b>API 工具</b>：负责题目管理和记忆系统</li></ol><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e9806c931fd38b971d923e" data-id="2ed97da545e9806c931fd38b971d923e"><span><div id="2ed97da545e9806c931fd38b971d923e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9806c931fd38b971d923e" title="设计思考：为什么「简单」往往更有效？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">设计思考：为什么「简单」往往更有效？</span></span></h4><div class="notion-text notion-block-2ed97da545e980a0bde3dc71f0b5c120">这套设计的核心思路是：不要用一堆 MCP 工具限制 LLM 的选择空间、让工具描述占用绝大部分 token，而是让 LLM 自己选武器、写招式。</div><div class="notion-text notion-block-2ed97da545e980058b6bdd689a2072c5">回顾这次比赛，我发现一个有趣的现象：<b>越简单的设计，往往越有效</b>。</div><div class="notion-text notion-block-2ed97da545e9800186d6da66e7743443">为什么？因为 LLM 本质上是一个「模式匹配器」，而不是「推理引擎」：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e9806ba042c15ad60932d8"><li>工具越多 → LLM 需要匹配的模式越复杂 → 出错概率越高</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98020b94ce5594aad2fbd"><li>工具越少 → LLM 的决策空间越清晰 → 执行越稳定</li></ul><div class="notion-text notion-block-2ed97da545e9808683a9e1a24c8db427">所以我的工具设计原则是：<b>给 LLM 最少的选择，但每个选择都足够强大</b>。</div><div class="notion-text notion-block-2ed97da545e98034a586ed361ea5a8d9">三个工具就够了：</div><ol start="1" class="notion-list notion-list-numbered notion-block-2ed97da545e98094a67bcfbe8ec766b8" style="list-style-type:decimal"><li><code class="notion-inline-code">execute_command</code> — 执行任何 Kali 命令</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-2ed97da545e98016a423c7c6c3a25dee" style="list-style-type:decimal"><li><code class="notion-inline-code">execute_python_poc</code> — 执行任何 Python 代码</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-2ed97da545e98006981be9dce2bfafa5" style="list-style-type:decimal"><li><code class="notion-inline-code">submit_flag</code> — 提交答案</li></ol><div class="notion-text notion-block-2ed97da545e98068aa25ff8a40ba4781">这不是偷懒，而是刻意为之。把复杂度交给 LLM 的「知识」，而不是交给「工具数量」。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980ae8541eb00356e3c54"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Af8ee33ce-bdab-44f7-895f-9d900e08c4de%3A3.png?table=block&amp;id=2ed97da5-45e9-80ae-8541-eb00356e3c54&amp;t=2ed97da5-45e9-80ae-8541-eb00356e3c54" alt="notion image" loading="lazy" decoding="async"/></div></figure><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e98066a907f5f436ddedbb" data-id="2ed97da545e98066a907f5f436ddedbb"><span><div id="2ed97da545e98066a907f5f436ddedbb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e98066a907f5f436ddedbb" title="实验性探索：动态角色互换"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">实验性探索：动态角色互换</span></span></h4><div class="notion-text notion-block-2ed97da545e98068a822f1ba9e5a81d9">我在比赛中还尝试了一个兜底策略，主要用于两小时后进行突破，预期是解答出常规方式未解答出来的题目。</div><div class="notion-text notion-block-2ed97da545e9803ca487df9c44cf15df">当一次攻击失败，单纯的重试可能无效。所以我设想了一个「角色互换」机制：第一轮 DeepSeek 主攻失败，第二轮就换 MiniMax 主攻、DeepSeek 退居幕后做参谋，反复轮换。</div><div class="notion-text notion-block-2ed97da545e9805983ccfc9c7ac50ba8">理论上这能利用不同模型的推理强项来突破死锁。</div><blockquote class="notion-quote notion-block-2ed97da545e980aa8363e5cceeaf7864"><div>实际效果：这还是一个实验性的功能。由于硅基流动的 api 比赛第二天晚上调试了忘记关了，跑了一夜，导致没钱了，比赛期间未能充分验证多模型轮换的效果，最终主要还是依靠 DeepSeek 自身的能力。但这套机制在未来的多模型协作中仍有探索价值。</div></blockquote><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980e18399ce7919240025"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Acc8bf97d-ec1e-4378-860b-d9c0679adbb4%3A4.png?table=block&amp;id=2ed97da5-45e9-80e1-8399-ce7919240025&amp;t=2ed97da5-45e9-80e1-8399-ce7919240025" alt="notion image" loading="lazy" decoding="async"/></div></figure><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e980a38344c718fabb56ac" data-id="2ed97da545e980a38344c718fabb56ac"><span><div id="2ed97da545e980a38344c718fabb56ac" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980a38344c718fabb56ac" title="版本演变时间线"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>版本演变时间线</b></span></span></h3><hr class="notion-hr notion-block-2ed97da545e980ebaad2d9ef42709cb2"/><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980ab999ffa299e0b2bed"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Aa5914fa8-f84b-4a4c-9eb8-ea88515028ef%3A5.png?table=block&amp;id=2ed97da5-45e9-80ab-999f-fa299e0b2bed&amp;t=2ed97da5-45e9-80ab-999f-fa299e0b2bed" alt="notion image" loading="lazy" decoding="async"/></div></figure><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e980ac8c6fc87b531ad9ad" data-id="2ed97da545e980ac8c6fc87b531ad9ad"><span><div id="2ed97da545e980ac8c6fc87b531ad9ad" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980ac8c6fc87b531ad9ad" title="回顾与思考"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>回顾与思考</b></span></span></h3><div class="notion-text notion-block-2ed97da545e980efb7d7c5829a1ff984">回顾这次比赛，我认为做对了几件事：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e9806bb297fbf831edbc70"><li><b>顾问 Agent 的设计</b>：模拟了我日常使用 LLM 的习惯——从不盲信 LLM 的回答</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980e9891edea5122babbd"><li><b>极简的工具设计</b>：放弃复杂封装，直接让 LLM 用 Kali 工具，降低 MCP 工具带来的上下文干扰</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98093a8f8dc5457c354e0"><li><b>把主动权交给 LLM</b>：让它自己规划攻击步骤</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9804a9b22e52664f180ac"><li><b>兜底策略</b>：在关键时刻救回了多道题</li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-2ed97da545e980519245d5cc689d529f" data-id="2ed97da545e980519245d5cc689d529f"><span><div id="2ed97da545e980519245d5cc689d529f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980519245d5cc689d529f" title="当前问题与未来规划"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">当前问题与未来规划</span></span></h4><div class="notion-text notion-block-2ed97da545e9809ea3b2f93caa55c3e9">当前设计存在一个问题：主 Agent 的 Prompt 里混杂了太多东西——解题策略、Python 规范、Docker 用法、漏洞知识。这加重了它的认知负担，比赛中通过日志来看，出现了很多次 Python 代码格式错误、工具误用等问题。</div><div class="notion-text notion-block-2ed97da545e980e19e53cc047505dea2">接下来我计划重构为分层架构（已实现）：</div><ol start="1" class="notion-list notion-list-numbered notion-block-2ed97da545e9806d8c78cc5bb82d0a52" style="list-style-type:decimal"><li><b>主 Agent 只负责规划</b>：执行交给 PoC Agent、Docker Agent 等子 Agent</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-2ed97da545e9807eb035e29d0598f515" style="list-style-type:decimal"><li><b>子 Agent 专注执行</b>：在 prompt 中根据功能不同进行详细约束，只返回结果给主 Agent，保证主 Agent 上下文的干净</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-2ed97da545e980a883ddc072994d5ea4" style="list-style-type:decimal"><li><b>按需加载知识</b>：参考 <b><a class="notion-link" href="https://code.claude.com/docs/zh-CN/skills" target="_blank" rel="noopener noreferrer">Claude Code</a></b> 中 Skills 的设计思路（按需激活特定能力），让顾问按需加载漏洞知识库，而不是一次性塞给主 Agent</li></ol><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e98079af2cc6bbff87bdd9"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A5897475e-edf5-4d7a-873f-8bc5e1061626%3A6.png?table=block&amp;id=2ed97da5-45e9-8079-af2c-c6bbff87bdd9&amp;t=2ed97da5-45e9-8079-af2c-c6bbff87bdd9" alt="notion image" loading="lazy" decoding="async"/></div></figure><hr class="notion-hr notion-block-2ed97da545e980f4ba76e2c7260a7d9d"/><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e980a68affcc1312330a18" data-id="2ed97da545e980a68affcc1312330a18"><span><div id="2ed97da545e980a68affcc1312330a18" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980a68affcc1312330a18" title="结语"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>结语</b></span></span></h3><div class="notion-text notion-block-2ed97da545e98079801af8e5e5ec79f2">这次比赛让我意识到，用好 AI 的关键不是让它做所有事，而是识别出哪些问题属于它的「舒适区」——那些人类已经解决过、有大量训练数据的问题。渗透测试的大部分场景恰好符合这个条件。</div><div class="notion-text notion-block-2ed97da545e98095b02de73b63dcd808">如果你也在探索 AI Agent 的可能性，希望这份实战记录能给你一些启发。项目已开源，欢迎交流。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-2ed97da545e9806082dac35fa0774d60" data-id="2ed97da545e9806082dac35fa0774d60"><span><div id="2ed97da545e9806082dac35fa0774d60" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9806082dac35fa0774d60" title="参考"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>参考</b></span></span></h3><ul class="notion-list notion-list-disc notion-block-2ed97da545e980aa82a7ce376db1da30"><li><b><a class="notion-link" href="https://docs.langchain.com/oss/python/langchain/multi-agent" target="_blank" rel="noopener noreferrer">langgraph</a></b></li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98098b35acb39a5695d59"><li><b><a class="notion-link" href="https://github.com/westonbrown/Cyber-AutoAgent" target="_blank" rel="noopener noreferrer">Cyber-AutoAgent</a></b></li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9801099ffed41317d8293"><li><b><a class="notion-link" href="https://mp.weixin.qq.com/s/HaazAEMGqH1GBTmn9qI73g" target="_blank" rel="noopener noreferrer">AI for Coding：从 Vibe Coding 到规范驱动开发</a></b></li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980819c55e59d992810f6"><li><b><a class="notion-link" href="https://zc.tencent.com/competition/competitionHackathon?code=cha004" target="_blank" rel="noopener noreferrer">腾讯云黑客松智能挑战赛</a></b></li></ul></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[承影（ChYing）：三年磨一剑，一个安全人的开源梦]]></title>
            <link>https://fireline.fun/article/page-34</link>
            <guid>https://fireline.fun/article/page-34</guid>
            <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[承影（ChYing）：三年磨一剑，一个安全人的开源梦]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-2ed97da545e980d9b8bdf785d5787f79"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e9805394d6e4a3f6a08fea"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A15d0e4fa-a2dd-44bb-80a6-7a2824c170d3%3Ab5e9f48a-d10c-4428-bad9-1673f1084af8.png?table=block&amp;id=2ed97da5-45e9-8053-94d6-e4a3f6a08fea&amp;t=2ed97da5-45e9-8053-94d6-e4a3f6a08fea" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2ed97da545e980148eedcc235f931092"> </div><blockquote class="notion-quote notion-block-2ed97da545e9801092aff817c88ecac1"><div>写在前面</div><div class="notion-text notion-block-2ed97da545e980819897e615337c8e30">2023 年 4 月，我在 GitHub 上创建了一个叫 &quot;承影&quot; 的项目。</div><div class="notion-text notion-block-2ed97da545e9802cb75df41b3e5e6ec2">承影，取自古代名剑，《列子·汤问篇》中记载：&quot;二曰承影，将旦昧爽之交，日夕昏明之际，北面而察之，淡淡焉若有物存，莫识其状。其所触也，窃窃然有声，经物而物不疾也&quot; 意为在光影交错之际才能隐约看见的神剑。</div><div class="notion-text notion-block-2ed97da545e9808d9bbfd1e9b8591199">我希望这个工具也能如此——在渗透测试的明暗之间，成为安全人手中的利器。</div></blockquote><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-2ed97da545e980cda2bbda36ed31176b" data-id="2ed97da545e980cda2bbda36ed31176b"><span><div id="2ed97da545e980cda2bbda36ed31176b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980cda2bbda36ed31176b" title="缘起：一个安全人的产品梦"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>缘起：一个安全人的产品梦</b></span></span></h3><div class="notion-text notion-block-2ed97da545e980148fc2cc3769cbbaae">我是一个网络安全爱好者，热衷于开发实用、有趣的小工具。</div><div class="notion-text notion-block-2ed97da545e98054b84ceb6b16bfd288">一直以来，我有一个梦想：打造一款像 Xray、BurpSuite 这样被广泛使用的安全产品。</div><div class="notion-text notion-block-2ed97da545e98015a65cc46e8f30c359">在承影之前，我还做过另一个开源项目——<b><a class="notion-link" href="https://github.com/yhy0/Jie" target="_blank" rel="noopener noreferrer">Jie</a></b>，一个综合性的 Web 安全评估工具，支持主被动扫描、漏洞检测、信息收集等功能，目前收获了 600+ Star。</div><div class="notion-text notion-block-2ed97da545e980309a28f0d99097fbe8">但 Jie 更偏向自动化扫描，是&quot;跑起来就不用管&quot;的那种工具。我还缺一个交互式的渗透测试平台——能抓包、能改包、能重放、能爆破，像 Burp Suite 那样，但更轻量、更现代、更&quot;我的&quot;。</div><div class="notion-text notion-block-2ed97da545e980fabd8feaa360b3f037">于是，承影诞生了。</div><div class="notion-text notion-block-2ed97da545e98049b7dac7e11886229e">而且，我把 Jie 的扫描能力也集成了进来。承影 + Jie，一个负责交互，一个负责自动化，互为补充。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-2ed97da545e980b98356cf730bcc29a9" data-id="2ed97da545e980b98356cf730bcc29a9"><span><div id="2ed97da545e980b98356cf730bcc29a9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e980b98356cf730bcc29a9" title="三年：断断续续的深夜"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>三年：断断续续的深夜</b></span></span></h3><div class="notion-text notion-block-2ed97da545e9803bb848db88477316ac">从 2023 年到现在，这个项目经历了太多：</div><div class="notion-text notion-block-2ed97da545e9809cbac8e79143c62c50">第一版（2023）：用 Wails + Vue 搭了个架子，实现了基础的代理、目录扫描、JWT 解析。界面很简陋，但能用。开源后收获了 400+ Star，说实话有点意外。</div><div class="notion-text notion-block-2ed97da545e98043896de098ee0c36bc">沉寂期（2023-2024）：工作忙了，项目停更。但心里一直惦记着，总觉得还差点什么。</div><div class="notion-text notion-block-2ed97da545e9806e96b9f1d7f71349cb">重构期（2024-2025）：创建了私有仓库，137 次提交，无数个熬夜的深夜，大刀阔斧地重构。</div><div class="notion-text notion-block-2ed97da545e980c9aec2f78832af07f0">这里要说一个转折点：LLM 的出现。</div><div class="notion-text notion-block-2ed97da545e98059abb9dbf5fd5aa503">说实话，我的前端水平很有限，也没有时间系统学习。之前的界面之所以简陋，就是因为我只能写出那种程度的代码。</div><div class="notion-text notion-block-2ed97da545e9801e8903d4b1b427cd51">但 Cursor 等 AI 编程工具出来后，一切都变了。我不再需要纠结&quot;这个动画效果怎么实现&quot;、&quot;这个布局用 flex 还是 grid&quot;——我只需要描述我想要什么，AI 帮我实现。</div><div class="notion-text notion-block-2ed97da545e9800bb16cce25f1bcba9c">AI 是个人能力的放大器。 它不会替你思考产品该怎么设计，但它能帮你把想法变成代码。对于我这种&quot;有想法但技术有短板&quot;的人来说，这简直是破局的关键。</div><div class="notion-text notion-block-2ed97da545e98052917df6e0dc05eea8">于是，那个在我脑海里构思了很久的&quot;现代化 UI&quot;，终于能够落地了。</div><div class="notion-text notion-block-2ed97da545e980898682dbe6f3f84cd1">现在：它长这样了</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980a09469df99451e36ce"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A16083ed6-7bc7-48a2-a24f-81ae1a1ac4fb%3Aimage-20260112204045831.png?table=block&amp;id=2ed97da5-45e9-80a0-9469-df99451e36ce&amp;t=2ed97da5-45e9-80a0-9469-df99451e36ce" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2ed97da545e980108f9bc11cfc6f28a6"> </div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-2ed97da545e980369425e6a0b0336616"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A6f2d2be9-1979-4805-85f7-e4e015208bb1%3Aimage-20260112204151347.png?table=block&amp;id=2ed97da5-45e9-8036-9425-e6a0b0336616&amp;t=2ed97da5-45e9-8036-9425-e6a0b0336616" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-2ed97da545e980a1b9dce48d9d7c0c6f"> </div><div class="notion-text notion-block-2ed97da545e9806bb702e0a089a79f8a">核心功能</div><div class="notion-text notion-block-2ed97da545e9807ba7c8ecffdd5915a4">HTTP 代理 &amp; 流量分析</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e980698bfac7d5aaa3b9c7"><li>实时捕获 HTTP/HTTPS 流量</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98049a3aef80237d7245f"><li>智能过滤（按方法、主机、状态码、路径）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9803582cdeda2a9584cc2"><li>右键菜单一键发送到 Repeater/Intruder/扫描器</li></ul><div class="notion-text notion-block-2ed97da545e98066b7a5e17f9dc1e6e2">Repeater（重放器）</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e9802f80fee9b1d7451e35"><li>手动修改请求，反复测试</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98055bcc3d88e70d283eb"><li>支持多标签页，对比测试更方便</li></ul><div class="notion-text notion-block-2ed97da545e9809d9886e556df954caf">Intruder（入侵者）</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e98005a2f8c4c158471c0c"><li>自动化攻击测试</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980948031fb571dd2f0a4"><li>支持多种 Payload 类型</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98099a1ffe722b6bca371"><li>结果实时展示</li></ul><div class="notion-text notion-block-2ed97da545e980d6a53ff32aaab2701e">Decoder（编解码）</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e980459328e1b032417f5e"><li>URL/Base64/Hex/Unicode 一键转换</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98071a261fdddec8fdc42"><li>MD5/SHA 哈希计算</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98038ac9efdaa67679941"><li>支持链式编解码</li></ul><div class="notion-text notion-block-2ed97da545e980fba463cb62c7623a53">插件模块</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e98092bb48c559bc767138"><li>JWT 解析与密钥爆破</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980d99e13f76fedf261b4"><li>Swagger API 测试（未授权访问、注入检测）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980edb457d50511169b75"><li>403 Bypass</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980bf9081e80c14b9694e"><li>Shiro 解密</li></ul><div class="notion-text notion-block-2ed97da545e9805a98d5d73c9458f919">集成 Jie 扫描器</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e9809691fbd0789d75fe35"><li>被动流量扫描</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9803fabbac85ba2471fac"><li>主动漏洞检测（XSS、SQL 注入、SSRF、命令执行等）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980bc9d04de14c5e2f22c"><li>Nuclei POC 支持</li></ul><div class="notion-text notion-block-2ed97da545e980159226f85a07429c66">技术栈</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e980dda150f784b49364ed"><li>后端：Go（高性能、跨平台）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9807d854bfb0bc957b4bd"><li>前端：Vue 3 + TypeScript</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980adba02c5190e6250f3"><li>框架：Wails v3（Go + Web 的完美结合）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9805aacb8ccf9adadeee8"><li>数据库：SQLite（轻量本地存储）</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980a4aa0ef9fac21e6350"><li>扫描引擎：Jie</li></ul><div class="notion-text notion-block-2ed97da545e980f4bc1eeb493cabaf3e">UI：液态玻璃设计</div><div class="notion-text notion-block-2ed97da545e980988492dfc576eb4de9">这次重构最大的变化是 UI。借助 AI 的帮助，我终于实现了心中的设计：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e9801aa2b3f2738a49621d"><li>液态玻璃风格（Glassmorphism）：半透明、模糊背景、柔和阴影</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98046ba09c802c15801a4"><li>深色/浅色主题：护眼，也好看</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98028983ed9e413c040c0"><li>响应式布局：各种分辨率都能用</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e980e0938cd00cb4b5d2bf"><li>流畅动画：每个交互都有反馈</li></ul><div class="notion-text notion-block-2ed97da545e980418061e429035b6d6f">我不是专业设计师，但我希望每天打开这个工具时，心情是愉悦的。</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-2ed97da545e9802ea80dc1ae007350f5" data-id="2ed97da545e9802ea80dc1ae007350f5"><span><div id="2ed97da545e9802ea80dc1ae007350f5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#2ed97da545e9802ea80dc1ae007350f5" title="为什么现在开源？"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>为什么现在开源？</b></span></span></h3><div class="notion-text notion-block-2ed97da545e9800aa910fbafbc5ce5f6">这个项目在我的私有仓库里躺了快两年。</div><div class="notion-text notion-block-2ed97da545e980c2b398c7652a8014f4">一直没开源，总觉得&quot;还不够好&quot;——功能没完善、Bug 没修完、UI 还能更好……再加上工作重心转移，渗透测试做得少了，Burp 也很久没打开。</div><div class="notion-text notion-block-2ed97da545e98092b871dafb08a2b0c7">但最近想通了：完美是开源的敌人。</div><div class="notion-text notion-block-2ed97da545e980b0b7eee2672204f7cc">与其让它继续躺在硬盘里，不如放出来。也许有人会觉得它有用，也许有人会帮忙改进，也许它能激发别人做类似的事情。</div><div class="notion-text notion-block-2ed97da545e9807fa4e5ecd2fe87c296">更重要的是，我想给这三年的付出留下一点痕迹。代码会过时，技术会迭代，但这份&quot;想做点什么&quot;的心意，希望能被记住。</div><div class="notion-text notion-block-2ed97da545e9803096f1c62b569c8fe2">写给同行</div><div class="notion-text notion-block-2ed97da545e980879276ca2536d0d11f">如果你也是安全从业者，我想说：</div><div class="notion-text notion-block-2ed97da545e9809d8766f45a01e532e1">这个工具不是要取代 Burp Suite。Burp 依然是最专业、最全面的渗透测试工具。</div><div class="notion-text notion-block-2ed97da545e980a59841e5e1f334db95">但如果你：</div><ul class="notion-list notion-list-disc notion-block-2ed97da545e98066bb7ed720d872aa28"><li>想要一个启动更快的轻量级工具</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9806cb685e062e06e4c3c"><li>想要一个界面更现代的选择</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e9802ea720f26fbc2a4332"><li>想要一个可以自己改的开源方案</li></ul><ul class="notion-list notion-list-disc notion-block-2ed97da545e98042bd51e7b6491b265f"><li>或者只是想看看一个安全人是怎么折腾自己的工具的</li></ul><div class="notion-text notion-block-2ed97da545e980f2b87cd1b6351e5e11">那么，承影也许值得你试试。</div><div class="notion-text notion-block-2ed97da545e9801681b1fd6671a56fed">最后</div><div class="notion-text notion-block-2ed97da545e980cbbc6cdaf5829dd93f">三年，137 次提交，无数个深夜。</div><div class="notion-text notion-block-2ed97da545e980f396e8e18f759a9aff">从一个简陋的原型，到现在这个样子。</div><div class="notion-text notion-block-2ed97da545e9806fa74ef87e032fb26f">它不完美，还有很多要改进的地方。但它是我的，是我一行一行敲出来的。</div><div class="notion-text notion-block-2ed97da545e98019b9a4ec19c7a59535">现在，它也可以是你的了。</div><hr class="notion-hr notion-block-2ed97da545e980fa9a8ed4072a643cd5"/><div class="notion-text notion-block-2ed97da545e98033b07aea07ae0cc954">承影 GitHub: <b><a class="notion-link" href="https://github.com/yhy0/ChYing" target="_blank" rel="noopener noreferrer">https://github.com/yhy0/ChYing</a></b></div><div class="notion-text notion-block-2ed97da545e98031a783d8f8b908a8f8">Jie GitHub: <b><a class="notion-link" href="https://github.com/yhy0/Jie" target="_blank" rel="noopener noreferrer">https://github.com/yhy0/Jie</a></b></div><div class="notion-text notion-block-2ed97da545e980558ea3e70687945c28">Star 一下？ 这是对一个独立开发者最好的鼓励。</div><hr class="notion-hr notion-block-2ed97da545e980429360fbc4a4d8da33"/><div class="notion-text notion-block-2ed97da545e980cbb300fbd7b24b7646">承影，愿你在光影之间，找到属于自己的锋芒。</div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[资产绘测增加 Meilisearch 搜索引擎实践]]></title>
            <link>https://fireline.fun/article/page-32</link>
            <guid>https://fireline.fun/article/page-32</guid>
            <pubDate>Fri, 15 Dec 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[自用资产绘测添加搜索引擎实践]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-cfcf140caae741f6a8f965051ab3c48a"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-gray_background_co notion-block-69d61724ab544808adf6335f881422a1"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="🔎">🔎</span></div><div class="notion-callout-text">为资产绘测增加一个搜索引擎</div></div><div class="notion-sync-block notion-block-b5b95c1bc5554455b3ef626dd541ffd6"><div class="notion-table-of-contents notion-gray notion-block-8aa90de3c92648938bd302b2f7249d93"></div></div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-9e0f91945433479c999d5324bc597ad8" data-id="9e0f91945433479c999d5324bc597ad8"><span><div id="9e0f91945433479c999d5324bc597ad8" class="notion-header-anchor"></div><a class="notion-hash-link" href="#9e0f91945433479c999d5324bc597ad8" title="1.安装 meilisearch"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.安装 meilisearch</span></span></h3><div class="notion-text notion-block-8a980d7fe8c14433be80c5e01c8f3d6b"><a class="notion-link" href="https://www.meilisearch.com/docs/learn/getting_started/installation" target="_blank" rel="noopener noreferrer">https://www.meilisearch.com/docs/learn/getting_started/installation</a></div><div class="notion-text notion-block-23905e2a236a43c2ab9e09ab6162eef4">这里使用 docker compose 的方式启动</div><div class="notion-text notion-block-e8995a98aa644800953cf0e984fc16d3"><code class="notion-inline-code">docker-compose.yml</code></div><div class="notion-text notion-block-929ea30396c5453fb547fb281cd1718a"><code class="notion-inline-code">meilisearch.toml</code> 文件内容</div><div class="notion-text notion-block-defe9e2943fd44bd879feaf93eb829df"><a class="notion-link" href="https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml" target="_blank" rel="noopener noreferrer">https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml</a></div><div class="notion-blank notion-block-f99051a3271146c7b9f19bf839867243"> </div><div class="notion-text notion-block-5869641583774ef792599332d5ede706">启动</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-9b13566c90c24f4699778e0a2728b85d" data-id="9b13566c90c24f4699778e0a2728b85d"><span><div id="9b13566c90c24f4699778e0a2728b85d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#9b13566c90c24f4699778e0a2728b85d" title="2.Mysql 数据同步"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.Mysql 数据同步</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-e9dd36d7a1994e7d995b4fd18d081725" data-id="e9dd36d7a1994e7d995b4fd18d081725"><span><div id="e9dd36d7a1994e7d995b4fd18d081725" class="notion-header-anchor"></div><a class="notion-hash-link" href="#e9dd36d7a1994e7d995b4fd18d081725" title="1.安装 meilisync"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.安装 meilisync</span></span></h4><div class="notion-text notion-block-ee4e4e51e05b4b299b09eaadd3fb915e"><code class="notion-inline-code">docker-compose.yml</code></div><div class="notion-blank notion-block-e45e84db11fc4a3889998687dbc6706d"> </div><div class="notion-text notion-block-5cd4135daa2a43fba1667f83ed3cf557"><code class="notion-inline-code">config.yml</code> 配置文件</div><div class="notion-text notion-block-3b13660c67d143ecafb8a2f2d1d06c6a">其它可以参考原项目</div><div class="notion-text notion-block-8e8d4054a06e4d51b612bb66655d0025"><a class="notion-link" href="https://github.com/long2ice/meilisync" target="_blank" rel="noopener noreferrer">https://github.com/long2ice/meilisync</a></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-3d98486d0e9c4cf19cae04b6dfcee3fc" data-id="3d98486d0e9c4cf19cae04b6dfcee3fc"><span><div id="3d98486d0e9c4cf19cae04b6dfcee3fc" class="notion-header-anchor"></div><a class="notion-hash-link" href="#3d98486d0e9c4cf19cae04b6dfcee3fc" title="2.设置 Mysql 的 binary log 格式"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">2.设置 Mysql 的 binary log 格式</span></span></h4><div class="notion-text notion-block-58268bdb2df943539efb33bf6603fad3">根据启动方式，通过以下三种选一即可</div><ol start="1" class="notion-list notion-list-numbered notion-block-c5683c0db40e4278a8e8e187520a05c9" style="list-style-type:decimal"><li>启动时指定</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-98885f1a058c41ea867ef2fae7164566" style="list-style-type:decimal"><li>sql 中执行</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-1f785be668204c3192bd2a3a02b6c68e" style="list-style-type:decimal"><li>docker-compose 启动</li></ol><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-ae7989623f6c45638b01a7dd341cd63d" data-id="ae7989623f6c45638b01a7dd341cd63d"><span><div id="ae7989623f6c45638b01a7dd341cd63d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#ae7989623f6c45638b01a7dd341cd63d" title="3.启动 meilisync"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.启动 meilisync</span></span></h4><div class="notion-text notion-block-7c298044d38d4a34b4c2910be12196e3">访问 <a class="notion-link" href="http://127.0.0.1:7700/" target="_blank" rel="noopener noreferrer">http://127.0.0.1:7700/</a> 可以看到已经有数据了，再说一遍</div><div class="notion-text notion-block-a5c73b05411c4927becd8f797c9b30a6"><span class="notion-red"><b>使用 web 时一定要设置key 进行授权认证 </b></span></div><div class="notion-text notion-block-873eee0a6db848ad89e95069ce83ace6">感觉有了这个 Meilisearch web 页面，资产绘测的前端都不需要了，api 接口加任务，Meilisearch web 查看任务结果(⊙o⊙)…</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-fd0698b8aea54facb16f2a9e6ad65366"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fd36f870d-9f00-45a5-832a-171fa918c93e%2Fadda592f-ed04-487e-92cf-8e073e4c64bd%2FUntitled.png?table=block&amp;id=fd0698b8-aea5-4fac-b16f-2a9e6ad65366&amp;t=fd0698b8-aea5-4fac-b16f-2a9e6ad65366&amp;width=2124&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-blank notion-block-72297fef64a84b8a9401d95e30e99ce5"> </div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-8c4c92cc064e41dc975ecd63dc255620" data-id="8c4c92cc064e41dc975ecd63dc255620"><span><div id="8c4c92cc064e41dc975ecd63dc255620" class="notion-header-anchor"></div><a class="notion-hash-link" href="#8c4c92cc064e41dc975ecd63dc255620" title="3.meilisearch SDK使用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">3.meilisearch SDK使用</span></span></h3><div class="notion-text notion-block-a7120ee60eaf4c13bd385aa00dda18c6">官方几乎支持了所有流行的Web开发语言、框架</div><div class="notion-text notion-block-94a297912a3b4fbebd08c432b5cac5f6"><a class="notion-link" href="https://www.meilisearch.com/docs/learn/what_is_meilisearch/sdks#sdks" target="_blank" rel="noopener noreferrer">https://www.meilisearch.com/docs/learn/what_is_meilisearch/sdks#sdks</a></div><div class="notion-text notion-block-04723781a7404ff69a96466a90d491a3">系统使用 golang 重写的，这里以 golang 为例</div><div class="notion-text notion-block-bf91a7d4ab1641049ebec086b50cd264"><a class="notion-link" href="https://github.com/meilisearch/meilisearch-go" target="_blank" rel="noopener noreferrer">https://github.com/meilisearch/meilisearch-go</a></div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-5ae7ad66d7b84c00b03bc43d7938bff5" data-id="5ae7ad66d7b84c00b03bc43d7938bff5"><span><div id="5ae7ad66d7b84c00b03bc43d7938bff5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#5ae7ad66d7b84c00b03bc43d7938bff5" title="4.参考"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">4.参考</span></span></h3><div class="notion-text notion-block-dce355d07a71453bb6e04b03400a0310"><a class="notion-link" href="https://www.meilisearch.com/docs" target="_blank" rel="noopener noreferrer">https://www.meilisearch.com/docs</a></div><div class="notion-text notion-block-50058d98497c4ce29e1f722d7aa36f4e"><a class="notion-link" href="https://github.com/long2ice/meilisync" target="_blank" rel="noopener noreferrer">https://github.com/long2ice/meilisync</a></div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Java ysoserial学习之CommonsCollections5(四)]]></title>
            <link>https://fireline.fun/article/page-20</link>
            <guid>https://fireline.fun/article/page-20</guid>
            <pubDate>Wed, 21 Jul 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Java ysoserial学习之CommonsCollections5(四)]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-f3dbaddb458f4dae8d0d68ac529d8a2b"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-gray_background_co notion-block-c7db69e185d448168439f61e8f8c8518"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="🎇">🎇</span></div><div class="notion-callout-text">庆祝我伟大的党百年华诞🎉<div class="notion-text notion-block-8e9dd29ca1bb4572b84adffcd9159eec">向伟大的祖国敬礼(&#x27;-&#x27;*ゞ</div></div></div><hr class="notion-hr notion-block-235d51e666dd4c29a6e805cca9aefd9a"/><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-c5d98375fe804ea0922924c5de60b52f" data-id="c5d98375fe804ea0922924c5de60b52f"><span><div id="c5d98375fe804ea0922924c5de60b52f" class="notion-header-anchor"></div><a class="notion-hash-link" href="#c5d98375fe804ea0922924c5de60b52f" title="0x00 前言"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x00 前言</span></span></h3><div class="notion-text notion-block-8b8fd793dc5248a08236ec47ab66ab2e">上节说道在<b>commons-collections-3.2.1.jar!/org/apache/commons/collections/keyvalue/TiedMapEntry.class</b>类中，总共有三个函数调用了<b>getValue</b>函数：</div><ul class="notion-list notion-list-disc notion-block-c6ca1bfc708f49739774187227436e43"><li><b>toString</b> CC5 本文重点</li></ul><ul class="notion-list notion-list-disc notion-block-29cfe81f30134ae7996493256c9798dd"><li><b>hashCode</b> CC6</li></ul><ul class="notion-list notion-list-disc notion-block-cdef4c0c131e49f0985e6bedea34e099"><li><b>equals</b> CC7</li></ul><div class="notion-text notion-block-593d7fefa719446a90287fb6eea8c46a">本文CommonsCollections6利用链的限制条件：</div><div class="notion-text notion-block-bb94bd15dbd34719a0c290686bd5e55d">	JDK版本：暂无限制、 CommonsCollections 3.1 - 3.2.1</div><div class="notion-text notion-block-18d908bf656e4d24b4a1d485a08918bf">实验环境:</div><div class="notion-text notion-block-96177a023656477ea1d5c9d3ba606c62">	JDK 1.8.0_261 、Commons-Collections 3.2.1</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-342bc7a03ec04740baceaf6070211850" data-id="342bc7a03ec04740baceaf6070211850"><span><div id="342bc7a03ec04740baceaf6070211850" class="notion-header-anchor"></div><a class="notion-hash-link" href="#342bc7a03ec04740baceaf6070211850" title="0x01 利用链"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x01 利用链</span></span></h3><div class="notion-text notion-block-d5f94527838f49faad80e83b6045acdb">这里重点看<b>BadAttributeValueExpException.readObject()</b><b>和</b><b>TiedMapEntry.toString()</b>，其他的都和前面两章一样 <a class="notion-link" href="https://mp.weixin.qq.com/s?__biz=MzkzODIwMTIwNg==&amp;mid=2247484514&amp;idx=1&amp;sn=2552ec324c1395c9c3c8b9f78cbb4908&amp;chksm=c2829d7bf5f5146d1d2dd0531344262a31b44f27d8c56c7465a9d0555c8773bc096424a0dd53&amp;scene=0&amp;xtrack=1#rd" target="_blank" rel="noopener noreferrer">Java ysoserial学习之CommonsCollections1(二)</a>、<a class="notion-link" href="https://mp.weixin.qq.com/s?__biz=MzkzODIwMTIwNg==&amp;mid=2247484560&amp;idx=1&amp;sn=8a997456a5ccc09a4c11208e92c31093&amp;chksm=c2829d89f5f5149f8000c1070e28eaf3049847b41e1377bf68f1074f7163ee7071eb61c84695&amp;scene=0&amp;xtrack=1#rd" target="_blank" rel="noopener noreferrer">Java ysoserial学习之CommonsCollections6(三)</a></div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-e615fa8c00b04f49bf9fe558f10b546d" data-id="e615fa8c00b04f49bf9fe558f10b546d"><span><div id="e615fa8c00b04f49bf9fe558f10b546d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#e615fa8c00b04f49bf9fe558f10b546d" title="1.1 TiedMapEntry.toString()"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.1 TiedMapEntry.toString()</span></span></h4><div class="notion-text notion-block-4505a96c1b764bd489add5c9fa8bed7c">上一节说过解决<b>Java高版本利用</b>问题，实际上就是在找是否还有其他调用 <b>LazyMap#get()</b> 的地方，因为<b>LazyMap</b>对象是只要执行<b>get</b>方法就会调用<b>transform</b>，而<b>transform</b>的特性是可以执行任意方法。</div><div class="notion-text notion-block-d7905e625c1042dc9bf9bf7ee23816f2">CC6中是在</div><div class="notion-text notion-block-a29753cbab4044a1a307b032eede2e48"><b>TiedMapEntry</b></div><div class="notion-text notion-block-d4afa8e254074508b0ecc95d83d0fc28">类中找到了</div><div class="notion-text notion-block-5ef3911708dd4fccb629ecf2a768a69b"><b>hashCode</b></div><div class="notion-text notion-block-7245b88c186542d4ba262268508d4fb6">方法中调用了</div><div class="notion-text notion-block-0b43ef95eb284339b64d653ebf9a173e"><b>map.get(key);</b></div><div class="notion-text notion-block-4974365ac9954dbaa70aab1feef86720">,并且</div><div class="notion-text notion-block-41e173f9f7bc493e949c3542d6e037f5"><b>map</b></div><div class="notion-text notion-block-4761cdfef4074cf6ab2969a05228dbca">是我们可控的</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3be26b38402c472aaa4678b6597bbbfc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701204945.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=3be26b38-402c-472a-aa46-78b6597bbbfc" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-5c1cd1e27b114886bd07ff2d8781b03c">而CC5中则是利用了</div><div class="notion-text notion-block-992049be123f4d2d95cdaa3883507322"><b>TiedMapEntry#toString</b></div><div class="notion-text notion-block-393c82bae19b4607b79b7ab97501b234">方法</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-b5a795d6053b47ddb820c4dd9d636de2"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701204954.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=b5a795d6-053b-47dd-b820-c4dd9d636de2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-b033b3cb86b24888a4b41aa1e8a2e0d5">还是先实验一下，确定可以</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-7a24b72d54af4911845cc4c84a825ed2"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205000.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=7a24b72d-54af-4911-845c-c4c84a825ed2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-0271a8ee49ba4192898f8686d5daf79d">但这还不够好，我们希望的是目标反序列化后直接触发命令的执行，因此我们需要找到一个类在反序列化后会直接触发 <b>TiedMapEntry#toString</b> 从而触发命令的执行。</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-82ae04b042534015a28df39f4a7ebfe4" data-id="82ae04b042534015a28df39f4a7ebfe4"><span><div id="82ae04b042534015a28df39f4a7ebfe4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#82ae04b042534015a28df39f4a7ebfe4" title="1.2 BadAttributeValueExpException.readObject()"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">1.2 BadAttributeValueExpException.readObject()</span></span></h4><div class="notion-text notion-block-0ae8e6cf3af54ef6876e25e6efa1f5bf">在ysoserial中是利用了</div><div class="notion-text notion-block-63302db134934e8c9da17ffbe735cd59"><b>rt.jar!/javax/management/BadAttributeValueExpException.class#readObject</b></div><div class="notion-text notion-block-03053b8505294e9b8ac2388354d882a4">方法来达到上述目的</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-ea0f8bc889dd42388b3de499b4bcb3e5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205412.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=ea0f8bc8-89dd-4238-8b3d-e499b4bcb3e5" alt="notion image" loading="lazy" decoding="async"/></div></figure><blockquote class="notion-quote notion-block-c6a7719ab8064e17ba88a9db1db888af"><div>这里我们可以看到</div><div class="notion-text notion-block-0e51faf7439c44ceb120ffa9f29370e4"><b>BadAttributeValueExpException</b></div><div class="notion-text notion-block-cc4c29a5b68347c2903260f46cae80e6"><b>Serializable</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-9f12bf09e19e4042ad62f972e6cf5b1f"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205417.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=9f12bf09-e19e-4042-ad62-f972e6cf5b1f" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-753c1bfd5af4444c825e21f8d6b2fb1a"><b>BadAttributeValueExpException</b></div><div class="notion-text notion-block-3215f7df2c8144988f24b855068d08a2"><b>Exception</b></div><div class="notion-text notion-block-15a8ba2bfd57445b80bc287f35c57a1e"><b>Exception</b></div><div class="notion-text notion-block-4390058e5dd74cbfb78bf0d878ca9e02"><b>Throwable</b></div><div class="notion-text notion-block-4bee57b94ffe4705895c062734db8135"><b>Throwable</b></div><div class="notion-text notion-block-9c711950edec498cbfbc964635ae993f"><b>Serializable</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-eff4d736faa54635993bd82abb6874e3"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205421.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=eff4d736-faa5-4635-993b-d82abb6874e3" alt="notion image" loading="lazy" decoding="async"/></div></figure></blockquote><div class="notion-text notion-block-2b7b4e45c5674aa98a9c0bf941788bbb">在</div><div class="notion-text notion-block-4b3b48f2febe49efb6429cd2c5217888"><b>BadAttributeValueExpException#readObject</b></div><div class="notion-text notion-block-3399272bbc624f9dbfd00429fa29e3aa">中发现</div><div class="notion-text notion-block-4e6242ea911f408c8c47e97bfaad6371"><b>get</b></div><div class="notion-text notion-block-5e61dd8ae87f4597b95e102cd07fcfbe">函数获取</div><div class="notion-text notion-block-ba864c8109a34984934abd00d3a93ac3"><b>val</b></div><div class="notion-text notion-block-8b33818431d74b0793f5c157d90c531a">的值然后赋给</div><div class="notion-text notion-block-1627b2bf00f4433c941bcbe7dbd5afe3"><b>valObj</b></div><div class="notion-text notion-block-ef3c3b21f6324091bf3d9dfa56c973c4">，然后在符合</div><div class="notion-text notion-block-6ab0499553d74e66903e0e56a8aeeea0"><b>第二个else if</b></div><div class="notion-text notion-block-5cab3d4b2fc140e6ad0c6cfabde7573f">的情况下就会调用</div><div class="notion-text notion-block-2e09f60ac03040eaaf431275d79d0531"><b>toString</b></div><div class="notion-text notion-block-0e9199b6dc814074b5fa729dd23e60dd">, 巧的是</div><div class="notion-text notion-block-2dd6786890254e388e036e949fb85936"><b>System.getSecurityManager()</b></div><div class="notion-text notion-block-a3e801ffdbc94dd4b7c3b22120b16fa9">返回值默认为</div><div class="notion-text notion-block-ab9a516c707142ab95924bee03887c69"><b>null</b></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-d3a8a06b7ac242309dfbe28eed5b1bbc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205426.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=d3a8a06b-7ac2-4230-9dfb-e28eed5b1bbc" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-61c27e19841f4b91bd47b20a7d53e7bf">这样就只需要可以控制<b>val</b>的值就可以执行命令了。</div><div class="notion-text notion-block-01cca721a7534a1b9fd19056812496b5">然后我们发现在构造函数中就可以控制<b>val</b>的值，可以直接将<b>tiedMapEntry</b>作为参数传进去。</div><div class="notion-text notion-block-bf4f550f4da5428fa27048da126c1e3a"><b>注意</b></div><div class="notion-text notion-block-b000b12c4d1a476691ced3caaefc739e">:在构造函数中我们可以看到，当传入一个</div><div class="notion-text notion-block-55b4713395cf4b1491185614a763590f"><b>val</b></div><div class="notion-text notion-block-b92ddfc7588f444391789f8df3ecdc69">，</div><div class="notion-text notion-block-ca5d4f6283df439cbe5655ff61813e69"><b>val</b></div><div class="notion-text notion-block-5d48411ddaf949a7b823254fe9df33e9">就不等于</div><div class="notion-text notion-block-5708c7f2dee54c7aa1f682aac8a01256"><b>null</b></div><div class="notion-text notion-block-fbcf3a6e89f54965835fd03ebe4780f0">，会调用一次</div><div class="notion-text notion-block-90e32865268f4b6db26d631ffdc56108"><b>toString()</b><b>方法,也就是说，创建</b><b>BadAttributeValueExpException</b></div><div class="notion-text notion-block-91c33880018c45b4a277bec31d00f9fd">对象时会弹出一次计算器，而在我们的构想中，反序列化时也会弹出一次，总共是</div><div class="notion-text notion-block-a302475fd0cb4976b8b50e6acee72cb9"><b>两</b></div><div class="notion-text notion-block-6d1091d40e7a446bac2a4dfdc9276521">次。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-aeda1234112c493284c5b4550d7dcfe9"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205431.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=aeda1234-112c-4932-84c5-b4550d7dcfe9" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-b5c137f666d940d193ff3be80a10749a">实验一下</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-aae25a2fc24a42e093b172f8d1fd97ce"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205435.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=aae25a2f-c24a-42e0-93b1-72f8d1fd97ce" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-8491d5b724fb4a2d9bf207ca76344723">但是，最终发现只弹了一次计算器，也就是说在反序列化时并没有执行<b>toString</b>方法，进而执行命令。</div><div class="notion-text notion-block-ad87e6eeae84433c922df588842b587e">直接在</div><div class="notion-text notion-block-e93acb4568144e958ccb417c5d72426a"><b>BadAttributeValueExpException#readObject</b></div><div class="notion-text notion-block-4a67e09099ba41c089e712df31cf5c3a">下断点Debug一下,会发现这时</div><div class="notion-text notion-block-db706162172546a1a50eb4f29cb55d64"><b>valObj</b></div><div class="notion-text notion-block-938174c434df4db0b7f5b2d05970196b">是一个字符串了，直接进入了</div><div class="notion-text notion-block-0e927cf4b8324df7a446fe085c309ab6"><b>第一个 else if </b><b>判断中，并没有进入</b><b>第二个 else if </b><b>，这是因为在创建</b><b>BadAttributeValueExpException</b></div><div class="notion-text notion-block-7c1a5b29f501424aa41846faa32d6de6">对象时，</div><div class="notion-text notion-block-64e2496d80a7404cb9e1ab4a215f12fd"><b>val</b></div><div class="notion-text notion-block-2ee91cb12b5d4a9b8354e825629bef17">已经执行过了一次</div><div class="notion-text notion-block-db47ff418e744cf2af3b262ff557190b"><b>toString</b></div><div class="notion-text notion-block-8d3f1518d6b148f1adc448d22156f2ae">方法，变成了字符串，所以匹配到了**第一个 else if **判断</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-b76f2a9f4cfe4912b58e1c87d2b8e9fa"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205443.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=b76f2a9f-4cfe-4912-b58e-1c87d2b8e9fa" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-639fa8beae91403eab9fd155f3c2854a">要想改变<b>val</b>的值就需要用到前面反复提到的<b>反射</b>了</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-3363493bc9474151b1e3a5a264d48a13"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column"><img src="https://cdn.jsdelivr.net/gh/yhy0/PicGoImg@master/WX/20210701205451.png?spaceId=d36f870d-9f00-45a5-832a-171fa918c93e&amp;t=3363493b-c947-4151-b1e3-a5a264d48a13" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-57fc19eaa723409182376a05626633f4">完整代码</div><h3 class="notion-h notion-h2 notion-h-indent-0 notion-block-054c6df5a50a49aaa603cdf2a8166cd5" data-id="054c6df5a50a49aaa603cdf2a8166cd5"><span><div id="054c6df5a50a49aaa603cdf2a8166cd5" class="notion-header-anchor"></div><a class="notion-hash-link" href="#054c6df5a50a49aaa603cdf2a8166cd5" title="0x02 参考"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">0x02 参考</span></span></h3><div class="notion-text notion-block-871292bb907545d881342aaf219b23e3">天下大木头师傅的 <a class="notion-link" href="https://www.yuque.com/tianxiadamutou/zcfd4v/ac9529#55fcdbc0" target="_blank" rel="noopener noreferrer">https://www.yuque.com/tianxiadamutou/zcfd4v/ac9529#55fcdbc0</a></div></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>