此页面可能已过时

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

访问我们的支持中心

使用Burp利用SQL注入漏洞:工会操作员

一旦确定数据库是容易受到SQL注入的影响,利用脆弱性证明任何潜在影响通常很有用。成功的SQL注入利用可以从数据库中读取敏感数据,修改数据库数据,在数据库上执行管理操作,在某些情况下,在操作系统上发出了命令。

联合操作员在SQL中用于组合两个或多个选择语句的结果。当Web应用程beplay体育能用吗序包含在选择语句中发生的SQL注入漏洞时,您通常可以采用工会运营商执行其他查询并检索结果。

OWASP_ACCESSCONTROLS_1

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

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

methodogy_sql_detection_sql-specific_parameter_manipulation_1

访问您拥有的应用程序beplay体育能用吗的网页被确定为具有潜在的SQL注入漏洞

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

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

methodogy_sql_detection_sql-specific_parameter_manipulation_2

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

我们将尝试利用的参数是URL中的“ ID”参数。

第一个任务是发现应用程序执行的原始查询返回的列数,因为联合语句中的每个查询必须返回相同数量的列。

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

methodology_sqli_exploitation_1

在此示例中,我们利用了一个事实,即可以将NULL转换为任何数据类型,以系统地注入不同数量的列数,直到执行注射的查询为止。

例如:

联盟选择null-

联盟选择null,null--

联盟选择null,null,null--

笔记:在此示例中,我们不需要单个报价来终止任何现有字符串。另外,空间字符必须编码为%20。

methodology_sqli_exploitation_2

该应用程序显示一个错误消息,可以在“响应”选项卡中查看。错误消息说使用了选择语句具有不同数量的列。

methodology_sqli_exploitation_3

我们可以继续添加无效的s到我们的查询,直到我们看到应用程序的响应发生变化为止。

当我们注入的查询返回的列数等于原始查询中的数字时,我们的查询将执行。

当我们注射8时无效的s,该页面在没有任何问题的情况下显示内容,没有错误消息。当我们添加第9无效的在查询中,应用程序会产生错误。因此,我们可以推断原始查询返回8列。

methodology_sqli_exploitation_4

确定了列的数量后,下一个任务是发现具有字符串数据类型的列,以便我们可以使用它从数据库中提取任意数据。

我们可以通过注入包含所需数量的查询来做到这一点无效的S,如我们以前一样,并替换了每个无效的依次与'一个'

例如:

联合选择“ A”,Null,Null ...

联盟选择null,“ a”,null ...

联盟选择null,null,'a'...

methodology_sqli_exploitation_5

'一个'在具有字符串数据类型的列中指定,执行注入的查询,您应该看到一个包含值的附加数据一个

但是,在我们的示例中,页面没有显示原始内容以外的任何内容。

我们可以看到查询正在执行,但是由于应用程序仅显示第一个结果,因此我们看不到注入的查询结果。

methodology_sqli_exploitation_6

我们可以通过修改原始查询来确保我们的数据是返回的第一行,以免返回任何行:

01 = 2Union选择NULL,NULL,'a',NULL,NULL,NULL,NULL,NULL,NULL

methodology_sqli_exploitation_7

现在,我们可以在响应中看到该应用程序正在显示注射'一个'字符串而不是实际用户详细信息。

'一个'显示在与我们提供的列相对应的数据字段中。

methodology_sqli_exploitation_8

现在,我们可以使用相关列从数据库中提取数据。

0和1 = 2联合选择NULL,NULL,版本(),Null,Null,Null,Null,Null,Null

在此示例中,我们更改了注入的代码以显示数据库的版本编号。然后,我们可以继续使用此技术从数据库中检索任何可访问的数据。