Yakit 入门实战指南
前言
本文是一篇真实实战记录,详细记录了从零开始使用 Yakit 进行渗透测试的完整过程,包括:
✅完整的工具配置过程(包括遇到的坑和解决方案)
✅DVWA 登录密码暴力破解实战(完整步骤 + 结果分析)
✅SQL 注入漏洞检测实战(Fuzzer 批量测试 + 响应分析)
✅常见问题和踩坑记录(真实遇到的问题和解决方法)
不同于传统的工具教程,本文记录了:
- 🔧真实的配置过程:SwitchyOmega 代理配置、证书安装、抓包失败的排查
- 💡实战中的思考:为什么状态码都是 302 但结果不同?响应大小差异说明了什么?
- 🐛踩过的坑:Edge 浏览器抓不到包、本地靶场流量被排除、空白页面的含义
- 🎯完整的测试流程:从抓包到爆破,从 payload 测试到结果验证
📋 目录
- 前言
- Yakit 简介
- 下载与安装
- 界面布局介绍
- 核心功能模块
- MITM 劫持实战:DVWA 登录密码爆破⭐ 重点
- Web Fuzzer 模糊测试:SQL 注入检测⭐ 重点
- 漏洞扫描实战
- 常用插件推荐
- 与 Burp Suite 对比
- 常见问题与踩坑记录⭐ 重点
- 总结与经验
- 附录:快捷键速查
- 参考资料
一、Yakit 简介
什么是 Yakit?
Yakit是由长亭科技开源的一款集成化单兵安全能力平台,类似于 Burp Suite,但功能更强大且完全免费。
核心特点
✅完全免费- 无需破解,所有功能开箱即用
✅中文界面- 国人开发,中文文档齐全
✅功能强大- 集成了代理、扫描、爆破、Fuzzer 等多种功能
✅插件丰富- 内置大量插件,支持自定义
✅持续更新- 活跃的开源社区,更新频繁
适用场景
| 场景 | 说明 |
|---|---|
| 渗透测试 | Web 应用安全测试 |
| 漏洞挖掘 | SQL 注入、XSS、SSRF 等漏洞发现 |
| 流量分析 | HTTP/HTTPS 请求拦截和分析 |
| 模糊测试 | Payload 批量测试 |
| 学习研究 | 安全技术学习和研究 |
二、下载与安装
1. 下载地址
官方网站:
https://www.yaklang.com/GitHub 仓库:
https://github.com/yaklang/yakit2. 安装步骤
Windows 系统:
- 下载
yakit-windows-xxx.exe安装包 - 双击运行安装程序
- 选择安装路径(建议默认)
- 完成安装
注意事项:
- ⚠️ 首次启动可能被杀毒软件拦截,需添加信任
- ⚠️ 需要管理员权限运行
- ⚠️ 确保端口 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
- 点击左侧“开启 MITM”标签
- 点击右侧橙色按钮“劫持启动”
- 确认显示“劫持 HTTP Request 127.0.0.1:8083”
⚡快捷方式:使用“免配置自动劫持启动”功能,Yakit 会自动配置系统代理!
步骤 2:配置浏览器代理
方法 1:SwitchyOmega 插件(推荐)
安装插件:
- Chrome 浏览器:访问 Chrome 网上应用店搜索 “Proxy SwitchyOmega”
- 点击"添加至 Chrome"安装
配置代理:
- 点击浏览器右上角 SwitchyOmega 图标
- 选择“选项”
- 点击“新建情景模式”→ 选择“代理服务器”
- 情景模式名称:
yakit - 填写代理信息:
代理协议: HTTP 代理服务器: 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 请求列表
- 找到登录的 POST 请求:
POST /dvwa/login.php HTTP/1.1- 状态码通常是302(重定向)
- 可以点击查看请求详情
步骤 4:发送到 WebFuzzer
- 在 MITM 请求列表中找到登录的 POST 请求
- 右键点击该请求
- 选择 “发送到 WebFuzzer”
- 自动跳转到 “Web Fuzzer” 标签页
现在你会看到完整的 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 开始批量发送请求,右侧会显示结果表格:
| 序号 | Method | 状态码 | 邮编 | 延迟(ms) | Payloads |
|---|---|---|---|---|---|
| 1 | POST | 302 | 0 | 39 | admin123 |
| 2 | POST | 302 | 0 | 1049 | 123 |
| 3 | POST | 302 | 0 | 1095 | 123456 |
| 4 | POST | 302 | 0 | 1128 | password |
分析要点:
- 状态码:所有请求都返回302 Found(重定向)
- 登录成功 → 重定向到
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!
实战总结
✅成功步骤回顾:
- 启动 Yakit MITM 劫持
- 配置浏览器代理(SwitchyOmega 或免配置启动)
- 访问 DVWA 登录页,输入正确账号 + 错误密码
- 在 Yakit 中抓取登录 POST 请求
- 发送到 WebFuzzer
- 配置 Fuzztag 密码字典
- 批量发送请求
- 分析响应头的
Location字段 - 找到重定向到
index.php的密码 → 爆破成功!
📊实战数据:
- 测试字典: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
- 在 “User ID” 输入框输入:
步骤 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 字典:
- 选中 URL 中的
1(id=后面的数字) - 点击 “Fuzztag” 按钮
- 输入 SQL 注入测试字典:
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 执行后,右侧会显示结果表格:
| 序号 | Method | 状态码 | 邮编大小 | 延迟(ms) | Payloads | 操作 |
|---|---|---|---|---|---|---|
| 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 管理机制
- 或者测试环境的配置问题
更可靠的测试方法 — 在浏览器中验证:
- 在浏览器的 User ID 输入框中输入:
1' - 点击 Submit
- 观察页面返回:
- 如果显示 SQL 错误信息 → 存在注入漏洞
- 如果显示空白 → SQL 查询失败,但没有显示错误
- 如果显示正常结果 → 输入被过滤或转义
布尔盲注测试:
输入: 1' AND '1'='1 预期: 应该返回 ID: 1 的数据(条件为真) 输入: 1' AND '1'='2 预期: 应该返回空白(条件为假)如果两次测试结果不同,说明存在布尔盲注漏洞!
实战经验总结
💡关键发现:
响应大小是关键指标
- 响应大小明显不同,说明 SQL 查询返回了不同的结果
- 可以作为判断注入成功的依据
不同的闭合方式
- 简单闭合
'可能不够 - 需要尝试
'),")),'))等不同闭合方式 - 取决于后端 SQL 语句的结构
- 简单闭合
状态码和重定向
- 302 重定向可能是 session 或权限问题
- 不能只依赖状态码判断
- 需要结合响应内容和响应大小综合分析
WAF 和过滤
- 复杂的 payload(如
OR 1=1,UNION SELECT)容易被拦截 - 简单的闭合测试(
',",'))更不容易触发防护 - 实战中需要绕过 WAF 的技巧
- 复杂的 payload(如
📊测试数据:
- 测试字典: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.1Yakit 会自动加载内置的 SQL 注入 Payload 字典并批量测试。
七、漏洞扫描实战
1. 插件扫描
步骤:
- 点击左侧“插件”
- 选择“基础爬虫”或“全端口扫描”
- 输入目标 URL
- 点击“开始执行”
2. 主动扫描
步骤:
- 在 MITM 中选中目标请求
- 右键 →“对该目标进行主动扫描”
- 选择扫描插件(SQL 注入、XSS、SSRF 等)
- 开始扫描
3. 查看扫描结果
扫描完成后:
- 在“数据库”→“漏洞与风险”中查看
- 点击漏洞可查看详细信息
- 包括 Payload、响应内容、修复建议
八、常用插件推荐
信息收集类
| 插件名称 | 功能 |
|---|---|
| 基础爬虫 | 爬取网站所有链接 |
| 子域名收集 | 枚举子域名 |
| 目录扫描 | 扫描敏感目录 |
| 端口扫描 | 扫描开放端口 |
漏洞检测类
| 插件名称 | 功能 |
|---|---|
| SQL 注入检测 | 自动化 SQL 注入测试 |
| XSS 检测 | 跨站脚本漏洞检测 |
| SSRF 检测 | 服务端请求伪造 |
| 文件上传检测 | 文件上传漏洞 |
暴力破解类
| 插件名称 | 功能 |
|---|---|
| 弱口令检测 | 常见弱密码爆破 |
| 后台爆破 | 后台登录爆破 |
如何安装插件
- 点击顶部“插件商店”
- 搜索需要的插件
- 点击“下载”
- 插件会自动添加到本地
九、与 Burp Suite 对比
| 对比项 | Yakit | Burp Suite |
|---|---|---|
| 价格 | 完全免费 | 专业版需付费($399/年) |
| 界面语言 | 中文 | 英文 |
| 上手难度 | 简单 | 中等 |
| 插件生态 | 丰富(免费) | 非常丰富(部分收费) |
| 功能完整性 | 覆盖 90% 场景 | 覆盖所有场景 |
| 性能 | 较快 | 较慢(Java) |
| 社区支持 | 中文社区活跃 | 国际社区成熟 |
我应该用哪个?
推荐 Yakit 的情况:
- ✅ 初学者入门
- ✅ 预算有限
- ✅ 中文环境友好
- ✅ 日常渗透测试
推荐 Burp Suite 的情况:
- ✅ 专业渗透测试
- ✅ 需要特定高级功能
- ✅ 团队协作
- ✅ 已有 Burp 使用经验
最佳实践:两者结合使用,Yakit 作为主力,Burp Suite 作为补充。
十、 常见问题与踩坑记录
问题 1:MITM 看不到任何请求
现象:启动 MITM,配置好代理,但浏览器访问网站时 Yakit 没有任何请求显示。
原因:
- 浏览器代理未生效
- 过滤规则太严格
- 访问的是本地网站(127.0.0.1 默认被排除)
- SwitchyOmega 的不代理列表包含了
127.0.0.1或localhost(最常见)
解决方案:
方案 1:修改 SwitchyOmega 不代理列表(推荐)
这是最常见的问题!
- 点击浏览器右上角 SwitchyOmega 图标
- 选择 “选项”
- 找到你创建的 yakit 情景模式
- 向下滚动到 “不代理的地址列表”
- 你会看到:
127.0.0.1 [::1] localhost - 删除或注释掉这些行(特别是
127.0.0.1和localhost) - 点击 “应用选项” 保存
- 刷新浏览器页面
为什么要这样做?
- 默认情况下,SwitchyOmega 会排除本地地址
- 这意味着访问
http://127.0.0.1/dvwa的流量不会走代理 - Yakit 就抓不到本地靶场的流量
方案 2:使用免配置启动
最简单的方法:
- 在 Yakit 中点击“免配置自动劫持启动”
- Yakit 会自动配置系统代理
- 所有浏览器都会自动走代理,包括本地流量
方案 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 格式错误
- 缺少依赖
解决方案:
更新插件:
- 插件商店 → 检查更新
- 删除旧版本重新安装
检查 URL 格式:
✅ http://localhost/dvwa ✅ https://example.com ❌ localhost/dvwa (缺少协议) ❌ http://localhost:80/ (多余的端口)查看详细错误:
- 点击错误提示查看完整日志
- 根据错误信息调整参数
问题 4:扫描结果中没有发现漏洞
现象:对目标进行扫描,显示"扫描完成",但漏洞列表为空。
原因:
- 目标确实没有漏洞(可能性较小)
- 扫描插件选择不当
- 目标有 WAF 防护
- 扫描参数配置错误
解决方案:
用已知漏洞靶场测试:
- 先扫描 DVWA(Security Level: Low)
- 如果能扫出漏洞,说明工具正常
调整扫描插件:
- 选择“全量插件扫描”
- 或手动勾选 SQL 注入、XSS 等常见漏洞插件
查看扫描日志:
- 数据库 → HTTP History
- 查看发送了哪些 Payload
- 检查响应是否正常
问题 5:Yakit 卡顿或崩溃
现象:使用一段时间后,Yakit 界面卡顿,响应缓慢,甚至崩溃。
原因:
- 请求历史过多,占用内存
- 插件死循环
- 电脑配置不足
解决方案:
清理历史数据:
- 数据库 → HTTP History
- 点击“清空数据”
限制历史记录数量:
- 设置 → MITM 配置
- “最大历史记录”改为 1000 或更小
重启 Yakit:
- 保存当前工作
- 完全退出后重新启动
十一、总结与经验
✅ 核心功能回顾
- MITM 劫持- 拦截和修改请求,手动测试
- Web Fuzzer- 批量测试 Payload,自动化测试
- 插件扫描- 一键扫描常见漏洞
- 编码工具- 快速编解码
完整实战流程回顾
本文通过两个真实案例,演示了 Yakit 的完整使用流程:
案例 1:DVWA 登录密码暴力破解
目标:通过 Yakit 爆破 DVWA 登录密码
步骤:
- ✅ 启动 Yakit MITM 劫持(使用"免配置启动")
- ✅ 配置浏览器代理(SwitchyOmega,删除
127.0.0.1排除规则) - ✅ 访问 DVWA 登录页面,输入正确账号 + 错误密码
- ✅ 在 Yakit 中抓取登录 POST 请求
- ✅ 发送到 WebFuzzer
- ✅ 配置 Fuzztag 密码字典(8 个常见密码)
- ✅ 批量发送请求,分析响应
- ✅ 查看响应头
Location字段,找到Location: index.php的密码 - ✅成功找到密码:
password
关键技巧:
- 判断登录成功的标准是
Location响应头,而不是状态码 - 所有密码测试都返回 302,但重定向地址不同
Location: index.php= 登录成功Location: login.php= 登录失败
案例 2:SQL 注入漏洞检测
目标:使用 WebFuzzer 检测 DVWA SQL 注入漏洞
步骤:
- ✅ 确认 DVWA 安全等级为 Low
- ✅ 访问 SQL 注入测试页面
- ✅ 输入正常参数
id=1,抓取 GET 请求 - ✅ 发送到 WebFuzzer
- ✅ 配置 SQL 注入测试字典(19 个 payload)
- ✅ 批量测试,分析响应大小和状态码
- ✅ 发现响应大小差异明显的 payload
- ✅ 在浏览器中验证注入点
关键发现:
- 复杂 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 插件市场
- 长亭科技官网
本文所有实战案例均在本地隔离环境中的合法靶场上进行,仅用于学习和研究目的。
⚠️重要提醒:未经授权对他人系统进行渗透测试是违法行为
请仅在自己搭建的测试环境或获得明确授权的系统上进行安全测试
本文作者不对读者的任何违法行为负责
请遵守《中华人民共和国网络安全法》等相关法律法规
合法使用,技术向善。