Yakit 入门实战指南
前言
本文是一篇真实实战记录,详细记录了从零开始使用 Yakit 进行渗透测试的完整过程,包括:
✅ 完整的工具配置过程(包括遇到的坑和解决方案) ✅ DVWA 登录密码暴力破解实战(完整步骤 + 结果分析) ✅ SQL 注入漏洞检测实战(Fuzzer 批量测试 + 响应分析) ✅ 常见问题和踩坑记录(真实遇到的问题和解决方法)
不同于传统的工具教程,本文记录了:
- 🔧 真实的配置过程:SwitchyOmega 代理配置、证书安装、抓包失败的排查
- 💡 实战中的思考:为什么状态码都是 302 但结果不同?响应大小差异说明了什么?
- 🐛 踩过的坑:Edge 浏览器抓不到包、本地靶场流量被排除、空白页面的含义
- 🎯 完整的测试流程:从抓包到爆破,从 payload 测试到结果验证
📋 目录
一、Yakit 简介
什么是 Yakit?
Yakit 是由长亭科技开源的一款集成化单兵安全能力平台,类似于 Burp Suite,但功能更强大且完全免费。
核心特点
✅ 完全免费 – 无需破解,所有功能开箱即用 ✅ 中文界面 – 国人开发,中文文档齐全 ✅ 功能强大 – 集成了代理、扫描、爆破、Fuzzer 等多种功能 ✅ 插件丰富 – 内置大量插件,支持自定义 ✅ 持续更新 – 活跃的开源社区,更新频繁
适用场景
| 渗透测试 | Web 应用安全测试 |
| 漏洞挖掘 | SQL 注入、XSS、SSRF 等漏洞发现 |
| 流量分析 | HTTP/HTTPS 请求拦截和分析 |
| 模糊测试 | Payload 批量测试 |
| 学习研究 | 安全技术学习和研究 |
二、下载与安装
1. 下载地址
官方网站:
https://www.yaklang.com/
GitHub 仓库:
https://github.com/yaklang/yakit
2. 安装步骤
Windows 系统:
注意事项:
- ⚠️ 首次启动可能被杀毒软件拦截,需添加信任
- ⚠️ 需要管理员权限运行
- ⚠️ 确保端口 8083-8087 未被占用
3. 首次启动
启动 Yakit 后会看到:
- ✅ 本地 Yak 引擎启动成功
- ✅ 自动打开浏览器到主界面
- ✅ 显示欢迎页面
三、界面布局介绍
主界面分区

核心功能模块
| MITM 交互式劫持 | 拦截和修改 HTTP/HTTPS 请求 |
| Web Fuzzer | 模糊测试,批量发送 Payload |
| 插件执行 | 运行各种安全测试插件 |
| 端口扫描 | 扫描目标主机开放端口 |
| 漏洞检测 | 自动化漏洞扫描 |
| 数据包扫描 | 对历史数据包进行检测 |
| Codec | 编码/解码工具 |
四、核心功能模块
1. MITM(中间人劫持)
作用:拦截浏览器和服务器之间的所有请求。
使用场景:
- 分析网站请求流程
- 手动修改请求参数测试
- 重放历史请求
2. Web Fuzzer(模糊测试)
作用:对单个请求进行批量 Payload 测试。
使用场景:
- SQL 注入测试
- 参数爆破
- 字典攻击
3. 插件执行
作用:运行预置或自定义的安全测试脚本。
常用插件分类:
- 信息收集
- 漏洞检测
- 暴力破解
- 漏洞利用
4. Codec(编解码)
支持的编码:
- Base64
- URL 编码
- HTML 实体编码
- Unicode 编码
- MD5/SHA1/SHA256 哈希
五、MITM 劫持实战
实战案例:DVWA 登录密码爆破
本节记录一次完整的 Yakit 实战流程:通过 MITM 劫持 + WebFuzzer 暴力破解 DVWA 登录密码。
步骤 1:启动 Yakit 代理
⚡ 快捷方式:使用 “免配置自动劫持启动” 功能,Yakit 会自动配置系统代理!
步骤 2:配置浏览器代理
方法 1:SwitchyOmega 插件(推荐)
安装插件:
- Chrome 浏览器:访问 Chrome 网上应用店搜索 “Proxy SwitchyOmega”
- 点击"添加至 Chrome"安装
配置代理:
代理服务器: 127.0.0.1
代理端口: 8083
重要配置:
- 不代理的地址列表:建议清空(或注释掉 127.0.0.1 和 localhost)
- 这样才能抓取本地靶场的流量
启用代理:
- 点击浏览器右上角 SwitchyOmega 图标
- 选择 “yakit” 情景模式
方法 2:免配置启动(最简单)
如果你使用 Yakit 的 “免配置自动劫持启动” 功能:
- Yakit 会自动配置系统代理
- 所有浏览器都会自动走代理
- 无需手动设置
步骤 3:访问 DVWA 并抓包
在浏览器中访问 DVWA 登录页面
http://127.0.0.1/dvwa/login.php
输入测试账号密码:
- 账号:admin(正确的账号)
- 密码:1(故意输错)
点击 Login,但不要手动提交
切换到 Yakit 窗口,观察 MITM 界面:

- 左侧 “交互劫持” 标签页会显示抓到的请求数量增加
- 中间表格区域会显示 HTTP 请求列表
- 状态码通常是 302(重定向)
- 可以点击查看请求详情
步骤 4:发送到 WebFuzzer
现在你会看到完整的 HTTP 请求:
POST /dvwa/login.php HTTP/1.1
Host: 127.0.0.1
…
Cookie: security=impossible; PHPSESSID=3i0v2j7j8h6j2845f3niq091na
username=admin&password=1&Login=Login&user_token=4d5ef4b9e45b36c9b8c36d18a2173bab
关键参数:最后一行的 password=1 就是我们要爆破的目标!
步骤 5:配置 Fuzztag 爆破字典
在 WebFuzzer 界面找到最后一行(请求体):
username=admin&password=1&Login=Login&user_token=…
选中 password=1 中的 1
点击顶部工具栏的 “Fuzztag” 按钮
弹出字典配置窗口,输入常见密码字典:
admin
password
admin123
123456
root
12345678
test
qwerty
点击 “确定输入字典”
Yakit 会自动生成 Fuzztag 标记,类似:
username=admin&password={{fuzztag}}&Login=Login&user_token=…
点击左上角橙色的 “发送” 按钮
步骤 6:分析爆破结果
Fuzzer 开始批量发送请求,右侧会显示结果表格:
| 1 | POST | 302 | 0 | 39 | admin123 |
| 2 | POST | 302 | 0 | 1049 | 123 |
| 3 | POST | 302 | 0 | 1095 | 123456 |
| 4 | POST | 302 | 0 | 1128 | password |
分析要点:
- 登录成功 → 重定向到 index.php
- 登录失败 → 重定向到 login.php

查看重定向地址:
- 点击每一行
- 在响应区域查看 Location 响应头
- 如果 Location: index.php → 密码正确!
- 如果 Location: login.php → 密码错误
响应时间:
- 第 1 行响应 39ms,其他都是 1000+ms
- 响应时间差异可以作为判断依据之一
步骤 7:验证成功的密码
逐个点击结果行,查看响应头:
HTTP/1.1 302 Found
Location: index.php ← 登录成功!
找到成功的密码(本例中是 password)后:
在浏览器中验证:
- 账号:admin
- 密码:password
- 点击 Login
成功登录 DVWA!
实战总结
✅ 成功步骤回顾:
📊 实战数据:
- 测试字典:8 个常见密码
- 发送请求:8 次
- 成功密码:password
- 耗时:约 5 秒
💡 关键技巧:
- 使用 免配置启动 可以省去手动配置代理的麻烦
- 抓取本地靶场流量时,要删除 SwitchyOmega 的 127.0.0.1 和 localhost 排除规则
- 判断爆破成功的标准是 Location 响应头,而不是状态码
- 响应时间和响应大小的差异也可以作为判断依据
六、Web Fuzzer 模糊测试
什么是 Web Fuzzer?
类似于 Burp Suite 的 Intruder,用于批量发送修改后的请求。
实战案例:SQL 注入漏洞检测
本节演示如何使用 WebFuzzer 对 DVWA 的 SQL 注入页面进行测试。
步骤 1:准备测试环境
确认 DVWA 安全等级为 Low
- 登录 DVWA
- 点击左侧菜单 “DVWA Security”
- 将安全等级设置为 “Low”
- 点击 “Submit”
访问 SQL 注入测试页面
http://127.0.0.1/dvwa/vulnerabilities/sqli/
测试正常查询
- 在 “User ID” 输入框输入:1
- 点击 “Submit”
- 应该显示:ID: 1
First name: admin
Surname: admin
步骤 2:抓取 SQL 注入测试请求
确保 Yakit MITM 已启动
在浏览器中输入 1 并点击 Submit
切换到 Yakit MITM 标签页
找到 SQL 注入测试的 GET 请求:
GET /dvwa/vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
- 状态码:200 OK
- 这个请求才是真正包含查询结果的
右键点击该请求 → “发送到 WebFuzzer”
步骤 3:配置 SQL 注入测试字典
在 WebFuzzer 界面,你会看到完整的 GET 请求:
GET /dvwa/vulnerabilities/sqli/?id=1&Submit=Submit&user_token=… HTTP/1.1
Host: 127.0.0.1
关键参数:URL 中的 id=1 就是我们要测试的注入点。
配置 Fuzztag 字典:

1
1'
1"
1')
1")
1'))
1"))
1' OR '1'='1
1" OR "1"="1
1') OR ('1'='1
1") OR ("1"="1
1' OR 1=1–
1' OR 1=1#
1' UNION SELECT NULL–
1') UNION SELECT NULL–
' OR '1'='1
" OR "1"="1
admin' OR '1'='1
admin') OR '1'='1
步骤 4:分析测试结果

Fuzzer 执行后,右侧会显示结果表格:
| 1 | GET | 400 | 2220 | 2 | 1’ OR ‘1’='1 | – |
| 2 | GET | 400 | 2220 | 1 | 1’) OR ‘1’='1 | – |
| 3 | GET | 400 | 2220 | 5 | 1’ OR 1=1– | – |
| … | … | … | … | … | … | – |
| 13 | GET | 302 | 0 | 30 | 1’ | – |
| 14 | GET | 302 | 0 | 72 | 1" | – |
| 15 | GET | 302 | 0 | 106 | 1’) | – |
| 16 | GET | 302 | 0 | 135 | 1 | – |
| 17 | GET | 302 | 0 | 1047 | 1’) | – |
| 18 | GET | 302 | 0 | 1064 | 1’)) | – |
| 19 | GET | 302 | 0 | 1251 | 1’)) | – |
结果分析:
状态码 400 的请求(前 12 行)
- 复杂的 SQL 注入 payload 被服务器拒绝
- 可能触发了某些过滤或验证机制
- 响应大小都是 2220 字节
状态码 302 的请求(第 13-19 行)
- 简单的闭合测试返回了 302 重定向
- 响应大小差异明显:30, 72, 106, 135, 1047, 1064, 1251 字节
- 响应大小不同说明查询返回了不同的数据
重点关注第 17-19 行
- 响应超过 1000 字节
- Payload: 1') 和 1'))
- 可能成功闭合了 SQL 语句
步骤 5:验证注入点
点击第 19 行(响应最大的那一行),查看响应详情:
HTTP/1.1 302 Found
Location: index.php
Content-Type: text/html; charset=UTF-8
注意:DVWA 的 SQL 注入测试页面可能返回 302 重定向,这是因为:
- Session 管理机制
- 或者测试环境的配置问题
更可靠的测试方法 — 在浏览器中验证:
- 如果显示 SQL 错误信息 → 存在注入漏洞
- 如果显示空白 → SQL 查询失败,但没有显示错误
- 如果显示正常结果 → 输入被过滤或转义
布尔盲注测试:
输入: 1' AND '1'='1
预期: 应该返回 ID: 1 的数据(条件为真)
输入: 1' AND '1'='2
预期: 应该返回空白(条件为假)
如果两次测试结果不同,说明存在布尔盲注漏洞!
实战经验总结
💡 关键发现:
响应大小是关键指标
- 响应大小明显不同,说明 SQL 查询返回了不同的结果
- 可以作为判断注入成功的依据
不同的闭合方式
- 简单闭合 ' 可能不够
- 需要尝试 '), ")), ')) 等不同闭合方式
- 取决于后端 SQL 语句的结构
状态码和重定向
- 302 重定向可能是 session 或权限问题
- 不能只依赖状态码判断
- 需要结合响应内容和响应大小综合分析
WAF 和过滤
- 复杂的 payload(如 OR 1=1, UNION SELECT)容易被拦截
- 简单的闭合测试(', ", '))更不容易触发防护
- 实战中需要绕过 WAF 的技巧
📊 测试数据:
- 测试字典:19 个 SQL 注入 payload
- 发送请求:19 次
- 成功响应:7 个(状态码 302)
- 异常响应:3 个(响应大小 > 1000 字节)
🎯 下一步行动:
- 使用 SQLMap 进一步自动化测试
- 尝试手工构造 UNION 注入语句
- 测试其他注入类型(报错注入、时间盲注)
常用 Fuzztag 标签语法
Yakit 支持的 Payload 类型:
| {{int(1-100)}} | 整数范围 | 生成 1 到 100 |
| {{file(路径)}} | 从文件读取 | 字典文件 |
| {{x(payload)}} | 内置字典 | {{x(sql-inject)}} |
| {{list(a|b|c)}} | 自定义列表 | a, b, c |
| {{rand(10)}} | 随机字符串 | 10 位随机字符 |
实战案例:使用内置 SQL 注入字典
GET /dvwa/vulnerabilities/sqli/?id={{x(sql-inject)}}&Submit=Submit HTTP/1.1
Yakit 会自动加载内置的 SQL 注入 Payload 字典并批量测试。
七、漏洞扫描实战
1. 插件扫描
步骤:
2. 主动扫描
步骤:
3. 查看扫描结果
扫描完成后:
- 在 “数据库” → “漏洞与风险” 中查看
- 点击漏洞可查看详细信息
- 包括 Payload、响应内容、修复建议
八、常用插件推荐
信息收集类
| 基础爬虫 | 爬取网站所有链接 |
| 子域名收集 | 枚举子域名 |
| 目录扫描 | 扫描敏感目录 |
| 端口扫描 | 扫描开放端口 |
漏洞检测类
| SQL 注入检测 | 自动化 SQL 注入测试 |
| XSS 检测 | 跨站脚本漏洞检测 |
| SSRF 检测 | 服务端请求伪造 |
| 文件上传检测 | 文件上传漏洞 |
暴力破解类
| 弱口令检测 | 常见弱密码爆破 |
| 后台爆破 | 后台登录爆破 |
如何安装插件
九、与 Burp Suite 对比
| 价格 | 完全免费 | 专业版需付费($399/年) |
| 界面语言 | 中文 | 英文 |
| 上手难度 | 简单 | 中等 |
| 插件生态 | 丰富(免费) | 非常丰富(部分收费) |
| 功能完整性 | 覆盖 90% 场景 | 覆盖所有场景 |
| 性能 | 较快 | 较慢(Java) |
| 社区支持 | 中文社区活跃 | 国际社区成熟 |
我应该用哪个?
推荐 Yakit 的情况:
- ✅ 初学者入门
- ✅ 预算有限
- ✅ 中文环境友好
- ✅ 日常渗透测试
推荐 Burp Suite 的情况:
- ✅ 专业渗透测试
- ✅ 需要特定高级功能
- ✅ 团队协作
- ✅ 已有 Burp 使用经验
最佳实践:两者结合使用,Yakit 作为主力,Burp Suite 作为补充。
十、 常见问题与踩坑记录
问题 1:MITM 看不到任何请求
现象:启动 MITM,配置好代理,但浏览器访问网站时 Yakit 没有任何请求显示。
原因:
解决方案:
方案 1:修改 SwitchyOmega 不代理列表(推荐)
这是最常见的问题!
[::1]
localhost
为什么要这样做?
- 默认情况下,SwitchyOmega 会排除本地地址
- 这意味着访问 http://127.0.0.1/dvwa 的流量不会走代理
- Yakit 就抓不到本地靶场的流量
方案 2:使用免配置启动
最简单的方法:
方案 3:确认代理生效
测试代理是否正常:
在浏览器访问这个测试页面:
http://mitm
如果能看到 Yakit 的测试页面,说明代理正常。
方案 4:调整过滤规则
- MITM 界面 → “过滤器”
- 暂时关闭所有过滤
- 或添加例外规则
方案 5:检查浏览器代理状态
Edge 浏览器特殊情况:
- Edge 虽然是 Chromium 内核,但对扩展代理支持不如 Chrome
- 某些情况下会忽略扩展设置的代理
- 建议使用 Chrome + SwitchyOmega 或 Yakit 免配置启动
验证代理是否生效:
- 点击 SwitchyOmega 图标
- 确认当前选中的是 “yakit” 情景模式(不是"直接连接"或"系统代理")
问题 2:Web Fuzzer 标签语法不生效
现象:设置了 {{int(1-100)}},但只发送了一次请求,没有批量发送。
原因:标签语法格式错误。
解决方案:
正确的标签格式:
{{int(1-100)}} ✅ 正确
{{ int(1-100) }} ❌ 错误(多了空格)
{int(1-100)} ❌ 错误(少了一对大括号)
常见标签语法:
{{int(1-100)}} # 整数范围
{{list(admin|root|test)}} # 列表(注意是竖线 | 不是反斜杠)
{{file(dict.txt)}} # 文件路径(相对或绝对)
{{x(sql-inject)}} # 内置字典
问题 3:插件执行报错
现象:执行插件时报错 “引擎错误” 或 “脚本执行失败”。
原因:
解决方案:
更新插件:
- 插件商店 → 检查更新
- 删除旧版本重新安装
检查 URL 格式:
✅ http://localhost/dvwa
✅ https://example.com
❌ localhost/dvwa (缺少协议)
❌ http://localhost:80/ (多余的端口)
查看详细错误:
- 点击错误提示查看完整日志
- 根据错误信息调整参数
问题 4:扫描结果中没有发现漏洞
现象:对目标进行扫描,显示"扫描完成",但漏洞列表为空。
原因:
解决方案:
用已知漏洞靶场测试:
- 先扫描 DVWA(Security Level: Low)
- 如果能扫出漏洞,说明工具正常
调整扫描插件:
- 选择 “全量插件扫描”
- 或手动勾选 SQL 注入、XSS 等常见漏洞插件
查看扫描日志:
- 数据库 → HTTP History
- 查看发送了哪些 Payload
- 检查响应是否正常
问题 5:Yakit 卡顿或崩溃
现象:使用一段时间后,Yakit 界面卡顿,响应缓慢,甚至崩溃。
原因:
解决方案:
清理历史数据:
- 数据库 → HTTP History
- 点击 “清空数据”
限制历史记录数量:
- 设置 → MITM 配置
- “最大历史记录” 改为 1000 或更小
重启 Yakit:
- 保存当前工作
- 完全退出后重新启动
十一、总结与经验
✅ 核心功能回顾
完整实战流程回顾
本文通过两个真实案例,演示了 Yakit 的完整使用流程:
案例 1:DVWA 登录密码暴力破解
目标:通过 Yakit 爆破 DVWA 登录密码
步骤:
关键技巧:
- 判断登录成功的标准是 Location 响应头,而不是状态码
- 所有密码测试都返回 302,但重定向地址不同
- Location: index.php = 登录成功
- Location: login.php = 登录失败
案例 2:SQL 注入漏洞检测
目标:使用 WebFuzzer 检测 DVWA SQL 注入漏洞
步骤:
关键发现:
- 复杂 payload(OR 1=1, UNION SELECT)返回 400,被拦截
- 简单闭合测试(', ", '))返回 302
- 响应大小是关键指标:1047, 1064, 1251 字节的响应需要重点关注
- 不同的闭合方式(', '), ')))可能对应不同的 SQL 语句结构
实战经验:
- 浏览器测试结果:输入 1' 后页面返回空白
- 空白页面 ≠ 没有漏洞,可能是:
- SQL 语法错误导致查询失败
- PHP 配置隐藏了错误信息
- 需要尝试布尔盲注或时间盲注
- 建议结合多种测试方法:错误注入、布尔盲注、UNION 注入
使用技巧总结
代理配置
- ✅ 使用 SwitchyOmega 快速切换代理
- ✅ 删除 127.0.0.1 和 localhost 排除规则(测试本地靶场的关键!)
- ✅ 或使用 Yakit 的"免配置启动"功能
证书安装
- ✅ 首次使用必须安装 CA 证书到"受信任的根证书颁发机构"
- ✅ 安装后重启浏览器
抓包技巧
- ✅ 区分不同的请求类型(GET/POST)
- ✅ 注意状态码(200/302/400)的含义
- ✅ 关注响应头(特别是 Location)
- ✅ 响应大小差异是重要的判断依据
Fuzzer 测试
- ✅ 从简单 payload 开始测试
- ✅ 观察响应大小、状态码、响应时间
- ✅ 对异常响应进行深入分析
- ✅ 结合浏览器手工验证
插件管理
- ✅ 定期更新插件库
- ✅ 根据测试目标选择合适的插件
数据管理
- ✅ 及时导出扫描结果和历史数据
- ✅ 定期清理历史数据,避免卡顿
过滤规则
- ✅ 设置过滤规则,排除静态资源请求(.jpg、.css、.js)
- ✅ 但不要过度过滤,避免遗漏重要请求
性能优化
- ✅ 定期清理历史数据
- ✅ 限制最大记录数(建议 1000 条)
实战建议
先熟悉基础功能
- MITM 劫持 → WebFuzzer 测试 → 插件扫描
- 按照本文案例逐步练习
结合靶场练习
- DVWA(推荐初学者)
- SQL-LABS(SQL 注入专项训练)
- Pikachu(多种漏洞类型)
- Upload-labs(文件上传漏洞)
多看官方文档
- https://www.yaklang.com/docs
- 官方文档有更多高级用法
加入社区交流
- 官方微信群、知识星球
- GitHub Issues 提问
对比 Burp Suite
- 同一个靶场用两个工具测试
- 对比差异,理解不同工具的优势
记录实战过程
- 遇到的问题和解决方案
- 成功的 payload 和测试方法
- 积累自己的漏洞字典
⚠️ 注意事项
仅用于授权测试
- 未经授权的渗透测试是违法行为
- 本文所有案例均在本地靶场环境中进行
数据安全
- 不要在生产环境使用
- 测试数据不要包含真实敏感信息
网络隔离
- 建议在虚拟机或隔离网络中测试
- 避免影响正常业务
及时更新
- 保持 Yakit 和插件为最新版本
- 关注官方更新日志
记录学习过程
- 遇到问题及时记录
- 成功的测试方法保存下来
- 建立自己的知识库
常见坑点提醒
坑点 1:SwitchyOmega 排除了本地地址
- ❌ 症状:访问 http://127.0.0.1/dvwa 时 Yakit 抓不到包
- ✅ 解决:删除 SwitchyOmega 中的 127.0.0.1 和 localhost 排除规则
坑点 2:Edge 浏览器代理不生效
- ❌ 症状:配置了 SwitchyOmega,但 Edge 不走代理
- ✅ 解决:使用 Chrome 浏览器,或使用 Yakit 的"免配置启动"
坑点 3:只看状态码判断成功/失败
- ❌ 症状:所有密码测试都返回 302,以为都失败了
- ✅ 解决:查看 Location 响应头,不同的重定向地址代表不同结果
坑点 4:忽略响应大小差异
- ❌ 症状:认为状态码相同就是相同的响应
- ✅ 解决:关注响应大小,差异明显的响应往往隐藏着关键信息
坑点 5:浏览器测试返回空白就放弃
- ❌ 症状:输入 1' 后页面空白,以为没有漏洞
- ✅ 解决:空白 ≠ 无漏洞,尝试布尔盲注、时间盲注等其他测试方法
附录:快捷键速查
| Ctrl + R | 重放请求 |
| Ctrl + F | 搜索 |
| Ctrl + I | 劫持请求 |
| Ctrl + E | 编码/解码 |
| Ctrl + S | 保存当前数据 |
参考资料
- Yakit 官方文档
- Yakit GitHub
- Yakit 插件市场
- 长亭科技官网
本文所有实战案例均在本地隔离环境中的合法靶场上进行,仅用于学习和研究目的。
⚠️ 重要提醒:未经授权对他人系统进行渗透测试是违法行为
请仅在自己搭建的测试环境或获得明确授权的系统上进行安全测试
本文作者不对读者的任何违法行为负责
请遵守《中华人民共和国网络安全法》等相关法律法规
合法使用,技术向善。
网硕互联帮助中心




评论前必须登录!
注册