http://mdsec.net/addressbook/27/
4.DELETE语句
DELETE语句用于删除表中的一行或几行数据,例如用户从他们的购物篮中删除一件商品或从个人资料中删除一个交货地址。
与UPDATE语句一样,DELETE语句通常使用WHERE子句告诉数据库更新表中哪些行的数据,并很可能在这个子句中并入用户提交的数据。破坏正常运行的WHERE子句可能会造成严重的后果,我们在UPDATE 语句部分提出的警告同样适用于这种攻击。
在最明显的情形中,只需向应用程序提交一个意外输入,就可以发现并最终确定一个SQL注入漏洞。在其他情况下,这种缺陷可能非常微妙,很难与其他类型的漏洞或不会造成安全威胁的“良性”异常区分开来。但是,可以按顺序采取各种步骤准确查明绝大多数的SQL注入漏洞。
注解
在应用程序解析过程中(请参阅第4章),应该已经确定了应用程序访问后端数据库的各种情形;现在,应当在所有这些情形中探查SQL注入漏洞。实际上,提交给服务器的任何数据都能够以用户无法察觉的方式传送给数据库函数,并且可能得到不安全的处理。因此,需要检查所有这些数据,以查找SQL注入漏洞。这包括所有URL参数、cookie、POST数据项以及HTTP消息头。无论哪一种情况,相关参数名称与参数值的处理过程都可能存在漏洞。
提示
在探查SQL注入漏洞时,一定要确保完全遍历任何可以提交专门设计的输入的多阶段过程。应用程序通常会从几个请求中收集一组数据,一旦收集到全部的数据,就将其保存在数据库中。这时,如果仅在每个请求中提交专门设计的数据并监控应用程序对那个请求的响应,就会遗漏许多SQL注入漏洞。
1.注入字符串数据
如果SQL查询合并用户提交的数据,它会将这些数据包含在单引号中。为利用任何SQL注入漏洞,攻击者需要摆脱这些引号的束缚。