此页面可能已过时

我们已经有一段时间没有更新了,因为我们正忙于研究新的,改进的内容,以帮助您充分利用Burp Suite。同时,请注意,此页面上的信息可能不再准确。

访问我们的支持中心

使用BURP通过SQL特异性参数操作检测SQL注入

在最明显的情况下,SQL注入缺陷可以通过向应用程序提供意外输入的单一项目来发现并最终验证。在其他情况下,错误可能非常微妙,可能很难与其他类别的脆弱性或不存在安全威胁的良性异常区分开。然而,您可以以有序的方式执行各种步骤,以可靠地验证大多数SQL注入缺陷。

通常可以通过操纵参数使用SQL特异性语法来构建其值并观察对应用程序响应的影响,从而检测出细微的SQL注入漏洞。

数字SQL特异性参数操作的手动测试

OWASP_ACCESSCONTROLS_1

首先,确保正确的打bur配置为浏览器

确保在代理“拦截”选项卡。

methodogy_sql_detection_sql-specific_parameter_manipulation_1

访问您正在测试的应用beplay体育能用吗程序的网页。

返回打bur并确保在代理“拦截”选项卡。

现在将请求发送到服务器。在此示例中,通过刷新页面。

methodogy_sql_detection_sql-specific_parameter_manipulation_2

该请求将在代理“拦截”选项卡。

我们将尝试操纵的参数是URL中的“ ID”参数。

右键单击请求中的任何地方,然后单击“发送到中继器”。

methodogy_sql_detection_sql-specific_parameter_manipulation_3

转到中继器标签。

我们可以在“原始”或“ params”选项卡中更改参数的值。

第一步是将值简单地更改为不同的数字。

通过使用此方法,我们可以确定更改参数是否对应用程序有影响。

单击“ GO”将更改的请求发送到服务器。

methodogy_sql_detection_sql-specific_parameter_manipulation_4

请求的结果可以在“中继器”工具的响应部分中查看。

在此示例中,我们选择使用“渲染”选项卡表示响应。

我们可以清楚地看到“用户ID”,“用户名”和“电子邮件”已更改。

该应用程序正在显示另一个用户的详细信息。

我们已经确认该应用程序正在使用“ ID”参数检索存储的数据。

methodogy_sql_detection_sql-specific_parameter_manipulation_5

下一步是检测参数是否正在算术中进行评估。

我们可以在参数中输入计算并监视服务器的响应。

在此示例中,我们提供值3-2,并且应用程序返回“用户ID 1”的信息。因此,该应用程序是通过算术评估参数。

这种行为可能指向各种可能的漏洞,包括SQL注入。

methodogy_sql_detection_sql-specific_parameter_manipulation_6

下一步是输入SQL特定关键字并将语法输入到参数中,以计算所需值,从而验证存在SQL注入漏洞。

一个很好的例子是ASCII命令,它返回提供的字符的数字ASCII代码。在此示例中,由于字符1的ASCII值为49,因此以下表达式等于SQL中的1:

50-ascii(1)

该页面显示没有任何错误,并显示了用户1的详细信息。这是因为注射的SQL语法等效于值1。这表明该应用程序将输入评估为SQL查询。

基于字符串的SQL特定参数操作的手动测试

OWASP_ACCESSCONTROLS_1

首先,确保正确的打bur配置为浏览器

确保在代理“拦截”选项卡。

methodogy_sql_detection_sql-specific_parameter_manipulation_8

访问您正在测试的应用beplay体育能用吗程序的网页。

返回打bur并确保在代理“拦截”选项卡。

现在将请求发送到服务器。在此示例中,通过单击“帮助”按钮。

methodogy_sql_detection_sql-specific_parameter_manipulation_9

该请求将在代理“拦截”选项卡。

我们将尝试操纵的参数是URL中的“ ID”参数。

右键单击请求中的任何地方,然后单击“发送到中继器”。

methodogy_sql_detection_sql-specific_parameter_manipulation_9.1

转到中继器标签。

使用“ GO”按钮将请求发送到服务器。

可以在中继器面板的另一侧查看响应。

methodogy_sql_detection_sql-specific_parameter_manipulation_10

我们可以在“原始”或“ params”选项卡中更改参数的值。

在此示例中,我们在参数的值中添加了一个字母“ Z”。

methodogy_sql_detection_sql-specific_parameter_manipulation_11

附加字母会导致应用程序的响应发生变化。

这表明该参数用于检索内容。

methodogy_sql_detection_sql-specific_parameter_manipulation_13

下一步是确认参数的值正在评估为SQL查询。从而验证SQL注入缺陷的可能性。

在此示例中,我们从用户info.php用户'%20'-info.php

%20是一个URL编码的空间,可以使用一个空间在某些SQL数据库中连接字符串。

如果应用程序的响应现在与原始响应匹配,则很明显该应用程序正在评估SQL查询中的参数。

methodogy_sql_detection_sql-specific_parameter_manipulation_12

在这种情况下,响应中没有错误消息或更改。

这表明输入以不安全的方式被合并到SQL查询中。

我们可以在Repeater选项卡的“响应”部分或通过浏览器将请求发送到应用程序中进行验证。