THM-Burp Suite 重发器

作者:xiaowu 日期: 分类:xiaowu 浏览:622

重发器

从本质上讲,Burp Suite Repeater 使我们能够修改拦截的请求并将其重新发送到我们选择的目标。它允许我们获取 Burp代理中捕获的请求并操作它们,根据需要重复发送它们。或者,我们可以从头开始手动创建请求,类似于使用 cURL 等命令行工具。

多次编辑和重新发送请求的能力使得 Repeater 对于端点的手动探索和测试非常有价值。它提供了一个用户友好的图形界面,用于制作请求有效负载,并提供响应的各种视图,包括用于图形表示的渲染引擎。

Repeater 界面由六个主要部分组成,如下图所示:

在 burp suite 中继器中显示示例请求

  1. 请求列表:位于选项卡的左上角,显示中继器请求列表。可以同时管理多个请求,发送到 Repeater 的每个新请求都会出现在此处。

  2. 请求控件:这些控件位于请求列表的正下方,允许我们发送请求、取消挂起的请求以及浏览请求历史记录。

  3. 请求和响应视图:占据界面的大部分,此部分显示请求响应视图。

  4. 布局选项:位于请求/响应视图的右上角,这些选项使我们能够自定义请求和响应视图的布局。

  5. 检查器:位于右侧,检查器允许我们以比使用原始编辑器更直观的方式分析和修改请求。我们将在稍后的任务中探讨此功能。

  6. Target:位于 Inspector 上方,Target 字段指定请求发送到的 IP 地址或域。

基本用法

一旦在代理模块中捕获了请求,我们就可以通过右键单击该请求并选择“ 发送到中继器”或使用键盘快捷键将其 发送到中继器Ctrl + R

将焦点转移回 Repeater,我们可以观察到捕获的请求现在可以在 Request 视图中访问:


请求视图中的请求

目标和检查器部分现在都显示相关信息,尽管我们目前缺乏响应。单击发送按钮后,响应视图会迅速填充:

响应视图迅速填充

我们只需在“请求”视图中键入并再次按“发送”。例如,将Connection标头更改为“open”,会产生值为“keep-alive”的Connection标头的响应:

包含 keep-alive 值的标头

此外,我们可以利用“发送”按钮右侧的历史记录按钮来浏览修改历史记录,从而允许我们根据需要向前或向后移动。

消息分析工具栏

  1. Pretty:这是默认选项,它采用原始响应并应用轻微的格式增强以提高可读性。

  2. Raw:此选项显示直接从服务器接收到的未经修改的响应,无需任何其他格式。

  3. Hex:通过选择此视图,我们可以检查字节级表示形式的响应,这在处理二进制文件时特别有用。

  4. 渲染:渲染选项允许我们可视化页面,就像它出现在网络浏览器中一样。虽然在 Repeater 中不常用,因为我们的重点通常是源代码,但它仍然提供了一个有价值的功能。对于大多数场景,Pretty选项通常就足够了。然而,熟悉其他三个选项的用法是有益的。

在视图按钮旁边,我们在右侧找到“显示不可打印字符”按钮 ( \n)。此功能可以显示使用PrettyRaw选项可能看不到的字符。例如,响应中的每一行通常以字符 结尾 \r\n,表示回车符后跟新行。这些字符在HTTP标头的解释中发挥着重要作用 。

检查器

检查器是中继器模块中请求和响应视图的补充功能。它还用于获取请求和响应的可视化组织细分,以及用于实验以查看使用更高级别检查器所做的更改如何影响等效的原始版本。

Inspector 可以在Proxy和 Repeater 模块中使用。在这两种情况下,它都位于窗口的最右侧,显示请求和响应中的组件列表:


在这些组件中,与请求相关的部分通常可以修改,从而可以添加、编辑和删除项目。例如,在“请求属性”部分中,我们可以更改与请求的位置、方法和协议相关的元素。这包括修改要检索的所需资源、将 HTTP方法从 GET 更改为其他变体,或将协议从 HTTP /1 切换为HTTP /2:

将协议从 HTTP/1 切换到 HTTP/2

其他可供查看和/或编辑的部分包括:

  1. 请求查询参数:这些参数是指通过 URL 发送到服务器的数据。例如,在 GET 请求中 https://admin.tryhackme.com/?redirect=false,查询参数重定向的值为“false”。

  2. 请求正文参数:与查询参数类似,但特定于 POST 请求。作为 POST 请求的一部分发送的任何数据都将显示在此部分中,允许我们在重新发送之前修改参数。

  3. 请求 Cookie:此部分包含随每个请求发送的可修改的 Cookie 列表。

  4. 请求标头:它使我们能够查看、访问和修改(包括添加或删除)随请求发送的任何标头。在检查 Web 服务器如何响应意外标头时,编辑这些标头可能很有价值。

  5. 响应标头:此部分显示服务器响应我们的请求而返回的标头。它无法修改,因为我们无法控制服务器返回的标头。请注意,此部分仅在发送请求并收到响应后才可见。

虽然这些组件的文本表示可以在请求和响应视图中找到,但 Inspector 的表格格式提供了一种方便的方式来可视化它们并与其交互。在 Inspector 中试验标头添加、删除和编辑有助于掌握相应的原始版本如何响应变化。

实例

kali 打开终端,输入

curl 'http://10.10.151.106/' -H 'FlagAuthorised: True' -v >3.html

发送指定标头重定向详细数据到3.html

image.png

再用firefox 3.html 打开

flag:THM{Yzg2MWI2ZDhlYzdlNGFiZTUzZTIzMzVi}

挑战1

打开网站

image.png

从上图可以看到,我们会被重定向到一个数字端点(如/products/3),这个端点通常需要验证,以确保我们所尝试导航到的端点是存在的,并且端点所对应的数字需要是一个有效整数;如果目标服务器并没有对数字端点进行充分验证,那么目标网站就可能存在安全风险。

答题

tips:本小节的思路是输入意外的端点值以查看服务器将如何响应,例如,我们可以输入一段文字或符号作为端点值,也可以尝试输入一个大于可用产品数量的数字作为端点值,或者输入一个小于或等于 0 的数字作为端点值。

激活Burp代理插件并开启Burp Proxy拦截功能,尝试捕获一个针对目标站点的products页面的包含端点的请求,然后将其转发给Repeater进行修改,我们将请求消息中的端点数值修改为-1,然后点击Send按钮继续发送请求消息:

image.png

返回码成500了

image.png

flag:THM{N2MzMzFhMTA1MmZiYjA2YWQ4M2ZmMzhl}

挑战目标

目标网站的/about/ID端点页面中的ID参数存在联合SQL注入漏洞,我们需要使用Burp Suite找到此SQL漏洞,然后执行SQLi攻击以检索一个存储在数据库中的关于CEO的注释。

根据题目,此题需要在请求头部分注入

激活Burp代理插件并开启Burp Proxy拦截功能,在攻击机上的浏览器中访问 http://10.10.107.186/about/2 ,捕获相关请求并将其发送给Repeater:

image.png

现在我们可以对请求消息进行修改测试,为了验证目标页面是否存在SQLi漏洞,我们在端点参数后添加'符号,如果服务器响应"500 Internal Server Error",则表明我们成功中断了SQL查询:

image.png

观察到第40行直接爆出sql语句

image.png

通过上图中的提示信息,我们可以获取到以下关键点:

  1. 与上述页面相关的SQL查询将基于服务器数据库中的people表进行查询;

  2. 该SQL查询在people表中选中了五列:firstNamelastNamepfpLinkrole以及bio

有了以上这些信息,我们就可以跳过枚举表名和查询部分列名的步骤,但是我们仍然需要找到我们的目标列的名称(以上五列并非是people表的全部列)。

我们可以使用联合查询——选择在默认数据库information_schemacolumns表中查询列名,并指定我们要查询的列属于people表。


相关查询语句如下:

/about/0 UNION ALL SELECT column_name,null,null,null,null FROM information_schema.columns WHERE table_name="people"

上面的SQL语句将创建一个联合查询,这将选择我们所指定的列然后是四个空列(因为UNION关键字前后所查询的列数必须相同,添加空列可避免查询出错),我们还将ID值由 2 更改为 0(将ID设置为无效值),这可以确保目标服务器只对UNION关键字后面的查询进行响应。

image.png

我们成功地从数据库中取出了第一个列名,但是现在页面只显示第一个匹配项——我们需要看到所有匹配项;因此接下来我们可以使用group_concat()函数,这能够将所有列名合并为一个输出:


/about/0 UNION ALL SELECT group_concat(column_name),null,null,null,null FROM information_schema.columns WHERE table_name="people"

image.png

我们成功地识别了people表中的八列:idfirstNamelastNamepfpLinkroleshortRolebionotes

考虑到我们在本小节中的任务要求,我们想找的目标列应该是notes

最后,我们要从服务器数据库中提取flag值——我们现在已经有了所需要的全部信息:

  • 表名:people

  • 目标列的名称:notes

  • CEO对应的ID值应该为:1 (这可以通过在/about/页中点击Jameson Wolfe的个人资料,并检查URL中的ID找到)。

让我们构建一个完整的payload来提取flag内容:


0 UNION ALL SELECT notes,null,null,null,null FROM people WHERE id = 1

image.pngimage.png

flag:THM{ZGE3OTUyZGMyMzkwNjJmZjg3Mzk1NjJh} 

image.png

关键词:

网友评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。