Burp Suite里的Comparer,本质上就是一个专门做可视化差异对比的小工具。PortSwigger官方文档写得很直接,它可以拿来比较任意两段数据,最常见的用法就是对比两条请求或两条响应,快速找出那些肉眼不容易一眼看出来的细微变化。真正用顺以后,它特别适合拿来比登录前后响应、不同参数下的请求差异,或者同一接口在不同权限下返回内容的变化。
一、BurpSuite Comparer怎么比对请求
Comparer的标准入口很简单,但很多人第一次用时容易少一步。官方文档给出的流程是,先在Burp任意位置找到你要分析的消息,再分别右键发送到Comparer,最后到Comparer标签页里选中这两条数据做对比。也就是说,真正的起点不是Comparer页签本身,而是先把目标请求或响应送进去。
1、先把要对比的两条请求送进Comparer
在Proxy、Repeater、Logger或其他消息视图里找到目标请求,分别右键选择发送到Comparer。官方说明里明确写到,你可以从Burp的任意位置把消息送进Comparer,所以不用局限在某一个工具窗口里找入口。
2、再到Comparer里选中两条数据
进入Comparer标签页后,官方文档说明,消息会分别出现在两个项目表里。接下来只要把两条目标数据选中,准备进入真正的差异视图。这里最关键的是确认你挑对了那两条请求,不然结果看起来再复杂也没有意义。
3、根据目的选Words或Bytes
PortSwigger官方给出的对比方式只有两种,一种是Words,一种是Bytes。Words更适合看普通HTTP文本内容,比如参数、响应正文、头部字段这类肉眼可读差异。Bytes更适合看字节级变化,比如特殊字符、二进制差异、看不见的控制字符,或者你怀疑只有少量字节发生了变化的情况。
4、请求和响应都可以比
Comparer不只是拿来比请求。官方在多个实战文档里都用它来对比响应,比如爆破用户名、密码、凭证填充这些场景里,都是先把响应送进Comparer,再去看是否存在细微回显差异。换句话说,你要分析的是请求构造差别,还是服务器返回差别,Comparer都能接。
二、BurpSuite Comparer差异内容怎么看
进入对比窗口以后,重点不是只看哪一边多了几行,而是先判断差异属于哪一类。PortSwigger官方文档说明,Comparer会高亮显示两条数据之间的差别,所以真正有效的看法,通常是先看高亮区域,再回头判断它影响的是状态、头部、正文,还是某些不可见字符。
1、先看高亮变化落在哪个区域
如果高亮主要集中在请求行、状态码、响应头,往往说明行为差异已经发生在协议层。要是高亮主要落在正文里,那更可能是业务回显、错误提示、数据字段或页面内容不同。官方文档虽然只说了会高亮差异,但真正分析时,先看差异落点,会比从头到尾硬读两份报文更快。这个判断是基于官方高亮机制做出的实际用法。
2、文本差异优先看Words
如果你在对比登录结果、权限页面、接口JSON或HTML回显,Words模式通常更直观。因为它是按文本单元去比较,参数值、提示语、字段名和页面片段会更容易看出来。官方把Words列成标准比较方式,本身就说明这种模式是面向常规请求和响应阅读准备的。
3、细微字节差异优先看Bytes
有些问题在Words里不明显,比如换行符不同、空字节、制表符、特殊控制字符,或者只差一两个字节的编码差异。这种时候就该切到Bytes。Burp文本编辑器官方文档专门提到,它支持显示不可打印字符,这类能力本身就说明字节层差异在某些测试里很重要。
4、差异少不代表无价值
实战里最有用的,有时恰恰就是很小的一点变化。PortSwigger在用户名枚举、登录爆破等文档里反复用Comparer来发现“看起来几乎一样”的响应差异,这说明Comparer的价值不在于帮你找大段不同,而在于把那些状态码、长度、提示文本或局部内容的细微差别放大出来。
三、BurpSuite Comparer比对时先看什么
Comparer真正用熟以后,重点不是工具怎么点,而是比对顺序怎么收。更实用的办法,通常是先确定比较对象,再选对比较模式,最后把高亮差异和测试目的对应起来。官方文档已经把基本动作讲清楚了,剩下的效率差别,主要就来自你怎么看。
1、先确认你在比请求还是比响应
如果你想分析参数改动是否真的发出去了,先比请求。要是你想确认服务器有没有表现出差异,先比响应。这个顺序一旦搞反,后面就容易盯错重点。
2、再确认你要抓的是文本差异还是字节差异
普通业务差异先上Words,异常编码、不可见字符、细粒度协议差异再切Bytes。把这一步先想清楚,结果窗口会好读很多。
3、然后只盯高亮区域,不要整份报文重读
Comparer的意义本来就是把变化高亮出来。先沿着高亮看,再结合状态码、头部、正文去判断差异含义,效率远高于从第一行开始重新通读两份消息。这个做法直接建立在官方高亮差异的工作方式上。
4、最后把差异和测试目标连起来
如果你在测用户名枚举,就看失败和成功响应是否只差一点点提示。要是你在测权限控制,就看不同身份下响应头和正文有没有微小变化。Comparer只是把差异摆出来,真正的结论还是要回到你的测试目标上。PortSwigger在多篇测试文档里都是按这个思路在用Comparer。
总结
BurpSuite Comparer怎么比对请求,关键动作就是先把两条消息发送到Comparer,再按目的选择Words或Bytes进入差异视图。BurpSuite Comparer差异内容怎么看,重点则是先看高亮区域落在哪一层,再判断它属于文本变化还是字节变化。把比较对象、比较模式和测试目标这三层先理顺,Comparer通常会比单纯肉眼对照请求和响应高效得多。
