burp与yakit的使用

使用burp和yakit在互联网抓取get和post数据包

burp

首先打开burp,然后在自己的浏览器(例如Firefox)打开随机页面。最后返回burp,点击Proxy下的HTTP history选项查看历史报文信息。

image-20250811160156797

GET包

随便点击一个上面的历史包查看信息

image-20250811160312800

POST包

image-20250811160422366

yakit

GET包

image-20250811164952426

POST包

image-20250811165309674

截图描述请求报文和响应报文字段的含义,以及这个字段在渗透测试中可能有什么作用

以这个get包为例

image-20250811160312800

左侧的请求报文

字段 含义 渗透测试作用
GET http的请求方法
Host 目标服务器域名 虚拟主机探测、域名劫持
User-Agent 客户端标识 注入恶意载荷,绕过WAF
Accept 客户端支持的响应内容类型 修改为*/*探测服务器响应差异
cookie 客户端身份信息 窃取会话ID,修改权限参数
Referer 上一个请求地址 伪造来源,窃取URL敏感参数

右侧的响应报文

字段 含义 渗透测试作用
200 状态码,标识响应信息 判断服务器信息(403;目录/文件枚举)
Server 服务器软件信息 识别服务器版本,寻找版本漏洞
Content-Length 响应Body的字节长度
Content-Type 响应Body的类型 强制类型转换,探测MIME嗅探漏洞
Cache-Control 控制缓存行为
Set-Cookie 服务器设置Cookie 检查HttpOnly/Secure缺失,测试Cookie劫持

安装phpstudy访问web页面,尝试触发404操作

打开虚拟机中的Apache和Mysql

image-20250811165701229

在自己主机上访问虚拟机创建的网站,后面加上/admin一个不存在的路径,触发404 Not Found

image-20250811170553093

尝试修改yakit,burp默认的监听端口号,再进行抓包

浏览器

打开浏览器(例如Firefox),配置网络设置

image-20250811163611936

修改代理端口和后续burp或yakit的端口一致

image-20250811163720076

burp

打开burp的Proxy,选择Proxy settings选项,点击需要修改的项选择Edit,修改端口即可,这里改为8081

image-20250811163241614

burp抓包,右侧端口变成8081

image-20250811164204850

yakit

选择项目后,点击左上角的MITM,在右下面可以修改监听端口

image-20250811164558748

yakit抓包

image-20250811164913188

尝试抓取手机应用程序数据包,尝试抓取微信小程序数据包

手机程序抓包方法一

首先电脑打开移动热点

image-20250811201146406

打开电脑cmd查看IP,找到无线局域网适配器,查看本机地址

image-20250811201628534

到burp上添加新的代理监听项

image-20250811202228988

移动端连接电脑热点,然后在WLAN界面,长按刚刚连接的网络,选择修改网络,

Screenshot_20250811_203124_com.android.settings

高级选项手动添加代理,代理主机名为电脑的IP,端口为burp监听的端口,保存即可

Screenshot_20250811_203133_com.android.settings

打开浏览器输入代理的主机IP和端口号,安装burp的证书

Screenshot_20250811_203152_com.android.documentsui

安装完证书后就能够开始访问网络了,这是后返回burp就能看到移动端访问外网的流量信息

image-20250811203541222

方法二

手机与电脑连接同一个网络,开启手机网络代理,将数据包发送给电脑即可

预习html基础知识,思考浏览器如何区分html和js的,因为两者混写在一起

一、核心区分机制

1. HTML 解析模式(初始状态)

  • 浏览器从字节流开始解析(网络传输的原始二进制数据)
  • 遇到 <!DOCTYPE html> 时:
    • 激活 标准模式(而非怪异模式)
    • 不直接影响代码类型识别,仅决定渲染规则
  • 默认进入 HTML 词法分析状态,将内容视为 HTML

2. <script> 标签的触发作用

<!-- 示例 -->
<script>
alert("This is JavaScript!"); // ← 此处内容被识别为 JS
</script>
  • 当解析器遇到 <script> 开始标签
    1. 立即暂停 HTML 解析
    2. 切换至 JavaScript 解析模式
    3. 将后续内容交给 JavaScript 引擎(如 V8)
  • 遇到 </script> 结束标签
    1. 结束 JavaScript 解析
    2. 切回 HTML 解析模式

二、关键解析规则

1. 内容类型嗅探(Content Sniffing)

  • 若未指定 Content-Type 响应头:

    • 浏览器通过文件开头内容猜测类型(如 <!DOCTYPE html> 暗示 HTML)
  • 明确声明可避免歧义:

    Content-Type: text/html; charset=utf-8  # 强制按HTML解析

2. 解析状态机(State Machine)

浏览器解析器维护状态变量决定当前处理内容类型:

状态 行为
DataState 默认状态,解析 HTML 标签/文本
TagOpenState 遇到 < 进入此状态
ScriptDataState 遇到 <script> 后激活,将内容视为 JS
RCDATAState 处理 <textarea>/<title> 等特殊标签内容

3. 特殊字符的转义规则

在 HTML 中:

<script>
// 即使包含 HTML 标签字符,仍按 JS 解析
const example = "</div>"; // ← 合法 JavaScript
</script>

在 JavaScript 中:

// 遇到 `</script>` 会错误地终止解析!
const code = "</script>"; // 导致解析中断

解决方案

<script>
// 使用转义写法
const code = "<\/script>"; // 反斜杠避免闭合标签
</script>

三、边缘场景处理

1. 内联事件处理器

<button onclick="alert('JS!')">Click</button>
  • on* 属性值按 JavaScript 解析
  • 解析流程:
    1. 识别 onclick 属性名
    2. 提取 alert('JS!') 字符串
    3. 动态编译为 JavaScript 函数

2. <script>type 属性

类型声明 解析行为
<script> 默认按 JavaScript 解析
<script type="text/javascript"> 显式声明 JavaScript
<script type="module"> 按 ES6 模块解析
<script type="text/html"> 不执行,视为自定义模板

3. XSS 防御的异常情况

恶意代码尝试混淆:

<scr<script>ipt>alert(1)</script> <!-- 被拆解的标签 -->

浏览器解析步骤:

  1. 首次 <scr → 进入临时标签收集状态
  2. 遇到 <script> → 中断收集,开始新标签
  3. 最终解析为两个无效标签,不会执行 JS
Author: wickt42
Link: http://example.com/2025/08/11/burp与yakit的使用/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.