通常可以通过操纵参数使用SQL特异性语法来构建其值并观察对应用程序响应的影响,从而检测出细微的SQL注入漏洞。
转到中继器标签。
我们可以在“原始”或“ params”选项卡中更改参数的值。
第一步是将值简单地更改为不同的数字。
通过使用此方法,我们可以确定更改参数是否对应用程序有影响。
单击“ GO”将更改的请求发送到服务器。
请求的结果可以在“中继器”工具的响应部分中查看。
在此示例中,我们选择使用“渲染”选项卡表示响应。
我们可以清楚地看到“用户ID”,“用户名”和“电子邮件”已更改。
该应用程序正在显示另一个用户的详细信息。
我们已经确认该应用程序正在使用“ ID”参数检索存储的数据。
下一步是检测参数是否正在算术中进行评估。
我们可以在参数中输入计算并监视服务器的响应。
在此示例中,我们提供值3-2,并且应用程序返回“用户ID 1”的信息。因此,该应用程序是通过算术评估参数。
这种行为可能指向各种可能的漏洞,包括SQL注入。
下一步是输入SQL特定关键字并将语法输入到参数中,以计算所需值,从而验证存在SQL注入漏洞。
一个很好的例子是ASCII命令,它返回提供的字符的数字ASCII代码。在此示例中,由于字符1的ASCII值为49,因此以下表达式等于SQL中的1:
50-ascii(1)
该页面显示没有任何错误,并显示了用户1的详细信息。这是因为注射的SQL语法等效于值1。这表明该应用程序将输入评估为SQL查询。
转到中继器标签。
使用“ GO”按钮将请求发送到服务器。
可以在中继器面板的另一侧查看响应。
我们可以在“原始”或“ params”选项卡中更改参数的值。
在此示例中,我们在参数的值中添加了一个字母“ Z”。
附加字母会导致应用程序的响应发生变化。
这表明该参数用于检索内容。
下一步是确认参数的值正在评估为SQL查询。从而验证SQL注入缺陷的可能性。
在此示例中,我们从用户info.php
到用户'%20'-info.php
。
%20
是一个URL编码的空间,可以使用一个空间在某些SQL数据库中连接字符串。
如果应用程序的响应现在与原始响应匹配,则很明显该应用程序正在评估SQL查询中的参数。
在这种情况下,响应中没有错误消息或更改。
这表明输入以不安全的方式被合并到SQL查询中。
我们可以在Repeater选项卡的“响应”部分或通过浏览器将请求发送到应用程序中进行验证。