概述
一般通过远程测试判断是否存在SQL注入( 列如,通过internet 并作为应用渗透测试的一部分 )。所以通常没有机会通过查看源代码来复查注入的查询的结构,因此常常需要进行大量的测试。
寻找SQL注入
SQL注入可以出现在任何从系统或用户接收数据输入的前端应用程序中,这些应用程序之后被用于访问数据库服务器。
在Web环境中,Web浏览器是客户端,它扮演向用户请求数据并将数据发送到远程服务器的前端角色。远程服务器使用提交的数据创建SQL查询。该阶段的主要目标是识别服务器响应中的异常并确定是否是由SQL注入漏洞产生。随后,将确定在服务器端运行的SQL查询的类型 ( 即SELECT、UPDATE、INSERT或DELETE ),以及将攻击代码注入查询中的位置 ( 比如FROM子句、WHERE子句或者ORDER BY子句等位置 )。
识别SQL注入漏洞有一种简单规则:通过发送意外数据来触发异常。
该规则的含义:
- 识别Web应用上所有的数据输入。
- 了解那种类型的请求会触发异常。
- 检测服务器响应中的异常。
识别数据输入
HTTP定义了很多很多客户端可以发送给服务器的操作,但我们只需要关注与SQL注入相关的两种方法: GET和POST。
GET方法
使用该方法,信息包含在URL中。
POST请求
在浏览器中填写表单并单击Submit按钮时通常使用该方法。
在客户端用户可以控制这些数据的传递。如果浏览器禁止修改,有两种解决方法:浏览器修改扩展,代理服务器。
浏览器修改扩展是运行于浏览器上的插件,如Firefox浏览器上的Web Developer插件,和Google上的Web Developer插件。它们可以实现显示隐藏字段、清楚大小限制、将所选HTML字段转换成输入字段等任务。
在HTTP请求的其它内容也可能会触发SQL注入漏洞。例如cookie。