自动化
自动化通过受控的载荷变化,多次发送同一个请求模板,让你能够大规模枚举参数、对输入进行模糊测试或测试访问控制。
创建会话
- 在 HTTP 历史记录或重放中打开请求。
- 右键单击请求并选择发送到自动化,或使用工具栏按钮。
- 请求将作为会话模板打开。后续所有配置均应用于此模板。
载荷位置
载荷位置标记载荷的插入点。Ogma 在每个请求中用载荷值替换各个标记。
- 在请求编辑器中选中文本,点击标记选中内容以添加位置标记。
- 点击标记手柄并选择移除以删除标记。
- 支持多个位置。其行为取决于攻击模式。
攻击模式
| 模式 | 行为 |
|---|---|
| 狙击 | 一次处理一个位置。依次在每个位置遍历所有载荷。请求总数等于载荷数量乘以位置数量。 |
| 攻城槌 | 同时在所有位置使用相同的载荷值。 |
| 草叉 | 并行遍历多个位置。将列表 A 的第一个载荷与列表 B 的第一个载荷配对,以此类推。最短列表耗尽时停止。 |
| 集束炸弹 | 遍历所有位置的每一种组合。请求数量等于所有列表长度的乘积。请使用较小的列表。 |
| 顺序执行 | 从每个响应提取配置的值,并将其注入下一个请求。开始前请配置提取器、目标位置和迭代次数上限。 |
载荷来源
| 来源 | 说明 |
|---|---|
| 字典 | 加载以换行符分隔的文件,或直接粘贴值。 |
| 数字 | 生成数字范围,可配置起始值、结束值和步长。 |
| 空值 | 在配置的迭代次数内,用空字符串替换该位置;不会保留原始标记文本。 |
| 自定义列表 | 直接输入值,无需文件。 |
匹配器
匹配器对符合条件的结果行进行标注。它们不会筛除行,而是为每个匹配器添加一列布尔值。
- 点击 + 匹配器添加匹配器。
- 使用 AI以自然语言描述条件,或手动配置。
| 匹配器类型 | 匹配条件 |
|---|---|
| 状态 | 响应状态码等于或不等于指定值。 |
| 大小 | 响应体长度在指定范围内。 |
| 响应体内容 | 响应体包含指定字符串,或匹配字符串或正则表达式。 |
停止条件
停止条件在匹配器触发时终止运行。
- 使用响应状态或大小、比较运算符和值配置停止条件。
- 匹配到结果会暂停运行;已经发出的请求仍可能完成。
当你只需要第一个成功结果(例如有效凭据或绕过检查的结果)时,这很有用。
提取器
提取器从每个响应中提取值,并将其存储在具名列中。
- 使用提取器捕获 CSRF 令牌、会话 ID 或 nonce,用于串联请求。
- 使用 AI描述提取目标,或手动配置正文正则匹配、正文文本查找或响应标头提取。
- 提取的值以列的形式显示在结果表中。
- 对于顺序模式,请显式配置用于串联的提取器;将结果发送到另一个会话,不会自动为该会话设置令牌提取。
结果表
每个完成的请求都会生成一行。
| 列 | 说明 |
|---|---|
| # | 请求序号。 |
| 状态 | HTTP 响应状态码。 |
| 大小 | 响应体长度,单位为字节。 |
| 时间 | 往返时间,单位为毫秒。 |
| 载荷 | 此请求使用的载荷值。 |
| 匹配器列 | 每个配置的匹配器对应一列布尔值。 |
| 提取器列 | 每个配置的提取器对应一列提取值。 |
点击任意行,在检查面板中打开完整请求和响应。
筛选结果
在结果表上方的筛选栏中输入 HTTPQL 表达式,缩小显示的行范围。例如:
text
result.status.eq:200 AND result.len.gt:500自动化查询使用 result.* 命名空间。对于提取列,使用其 result.extract.<name> 字段。HTTP 历史记录的 req.* 和 resp.* 字段不能与自动化结果筛选字段互换使用。
AI 辅助
AI按钮位于匹配器和提取器配置字段旁边。用自然语言描述你想检测或提取的内容,Ogma 会生成配置。保存前请检查结果。
将结果发送到其他工具
右键单击任意结果行,可以:
- 发送到重放 - 在重放中打开该具体请求和响应,以便手动跟进。
- 发送到新的自动化会话 - 使用结果行的请求作为新会话的模板。
- 复制为 cURL - 将请求复制为 curl 命令。