
Extension adds a new tab in Burp Suite called Extractor
从 Maven 下载 Google 的 GSON 库
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
在 Burp 的 Extender/Options/Java Environment 中选择你下载 Google 的 GSON 库的文件夹
从 Burp 的 Extender/Extensions 选项卡添加扩展。(扩展是仓库 dist 文件夹中的 jar 文件)。
克隆仓库。
进入 Burp 的 Extender/APIs 选项卡,点击 Save interface files 按钮,将 Burp 的接口文件保存到一个新文件夹中。然后将这些文件复制到克隆仓库的 src/burp 目录中。
从 Maven 下载 Google 的 GSON 库
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
在 extractor 目录下:
4. mkdir build
5. javac -cp gson-2.8.2.jar -d build src/burp/*.java
6. jar cf extractor.jar -C build burp
然后在 burp 的 Extender 选项卡中加载 extractor.jar 文件。(你还需要将 Burp 的路径指向存储 GSON 库的文件夹:Burp Extender > Options > Java Environment)
它应该在 Burp 中添加一个名为 Extractor 的新选项卡。

此扩展在 Burp Suite 中添加一个名为 Extractor 的新选项卡。
在此选项卡中,你可以向树中添加节点,以描述请求或响应中数据的样子。树中的每个叶子节点都会在显示查询或响应的每个位置创建一个新选项卡,该选项卡中的数据会根据从根到该叶子节点的所有父节点进行转换。
例如,如果请求体是一个 XML 负载,其中包含一个带有 Base64 编码字符串的特定标签,那么树看起来会像下面这样:

通过上述设置,每个请求和响应现在都会包含一个名为 Body>XML:tag_name>Base64 的选项卡,该选项卡应包含请求体中 XML 标签 tag_name 内的 Base64 解码后的数据。更改该选项卡中的数据会将数据重新 Base64 编码,并注入回请求体的同一个 XML 标签中(这样你就可以在 Proxy/Intercept 中拦截请求时修改请求,或在 Repeater 中构造负载)。
无参数。
此节点对传递给它的数据进行 Base64 解码,当你修改此节点或其任何子节点层级的数据时,它会沿链路重新编码。
无参数。
此节点对传递给它的数据进行基本的 URL 解码。请注意,在此节点或其任何子节点中修改的数据,在沿链路重新编码后可能会看起来不同,因为只有无效的 URL 字符会被重新编码。
无参数。
如果此节点或其任何子节点的数据被修改,此节点会对传递给它的数据进行 GZip 解压,并重新 GZip 压缩。
无参数。
此节点将传递给它的数据从二进制转换为十六进制字符串。如果此节点或其任何子节点的数据被修改,它会将数据从十六进制字符串转换回二进制。
无参数。
此节点将传递给它的数据从十六进制字符串转换为二进制。如果此节点或其任何子节点的数据被修改,它会将数据从二进制转换回十六进制字符串。
一个参数:
此节点从类型为 x-www-form-urlencoded 的一个 URL 参数节点中提取数据。它可以直接用作 Header 的子节点,从请求的 URL 中提取 URL 参数;也可以用作 body 的子节点(如果请求体仅包含 URL 风格参数);还可以用作任何其他节点的子节点(如果它包含 URL 或 x-www-form-urlencoded 参数)。修改后的数据将注入回参数中的相同位置。
两个参数:
此节点用于提取类型为 multipart/form-data 的 body 参数。修改后的数据将注入回参数中的相同位置。
一个参数:
此节点提取一个 cookie 中的数据,修改后的数据将注入回该 cookie 中。此节点应用作 Header 节点的直接子节点。
一个参数:
此节点提取一个 header 标志的内容,修改后的数据将注入回该标志中。此节点应用作 Header 节点的直接子节点。
一个参数:
此节点从第一个与 XML 节点名称参数匹配的 XML 节点中提取值。修改后的数据将注入回该节点的值中。
两个参数:
此节点从第一个与 XML 节点名称匹配的 XML 节点中提取参数值。修改后的数据将注入回该节点的参数中。
两个参数:
此节点从 JSON 负载中提取数据。只能提取传递给它的负载的顶层数据;不过,你可以将此节点与其他 Json 节点链接,以提取嵌套在 JSON 对象中的 JSON 对象。
一个参数:
此节点将传递给它的数据与其参数中的数据进行 AND 运算。传递给节点的数据应为二进制格式(如果需要,可先用 HextoBin 节点)。修改后的数据会被 AND 运算回去,但请注意,此操作价值不大,因为 AND 运算符不是双射的(你不能期望注入回去的数据在其上下文中具有意义)。
一个参数:
此节点将传递给它的数据与其参数中的数据进行 OR 运算。传递给节点的数据应为二进制格式(如果需要,可先用 HextoBin 节点)。修改后的数据会被 OR 运算回去,但请注意,此操作价值不大,因为 OR 运算符不是双射的(你不能期望注入回去的数据在其上下文中具有意义)。
一个参数:
此节点将传递给它的数据与其参数中的数据进行 XOR 运算。传递给节点的数据应为二进制格式(如果需要,可先用 HextoBin 节点)。修改后的数据会被 XOR 运算回去。
无参数
此节点不做任何处理:它只显示传递给它的数据。它主要用于添加一个检查点,以验证沿节点链传递的数据在插入该节点的特定位置是否正确。
一个参数:
此节点会将内容传递给正则表达式,并仅提取子匹配,这在将节点传递给其他节点之前准备节点时很有用。
示例 ==> Callback\\((.*)\\)
你可以选择用 java 制作自己的节点。代码中提供了一个示例节点文件,名为 QueryNodeXXX.java,只需复制/粘贴并重命名它,然后按照其中提供的说明操作。还要记得将你新制作的节点添加到 Globals.java 中列表的末尾附近(如果你不想破坏任何东西,请不要修改该列表的前 2 行)。