1.强制产生错误
对数据库类型、版本等信息进行识别是此类型攻击的动机所在。它的目的是收集数据库的类型、结构等信息为其他类型的攻击做准备,可谓是攻击的一个预备步骤。利用应用程序服务器返回的默认错误信息而取得漏洞信息。
2.采用非主流通道技术
除HTTP响应外,还能通过通道获取数据,然而,通道大多依赖于数据库支持的功能而存在,所以这项技术不完全适用于所有的数据库平台。SQL注入的非主流通道主要有E-mail、DNS以及数据库连接,基本思想为:先对SQL查询打包,然后借助非主流通道将信息反馈至攻击者。
3.使用特殊的字符
不同的SQL数据库有许多不同的特殊字符和变量,通过某些配置不安全或过滤不细致的应用系统能够取得某些有用的信息,从而对进一步攻击提供方向。
4.使用条件语句
此方式具体可分为基于内容、基于时间、基于错误3种形式。一般在经过常规访问后加上条件语句,根据信息反馈来判定被攻击的目标。
5.利用存储过程
通过某些标准存储过程,数据库厂商在对数据库的功能进行扩展的同时,操作系统也可与数据库进行交互。部分存储过程可以让用户自行定义。通过其他类型的攻击收集数据库的类型、结构等信息之后,便能够构建执行存储过程的命令。这种攻击类型往往能达到远程命令执行、特权扩张、拒绝服务等目的。
6.避开输入过滤技术
虽然对于通常的编码都可利用某些过滤技术进行SQL注入防范,但是此种情况下,也有许多方法可以避开过滤。一般可达到此目的的技术手段包括:SQL注释和动态查询的使用,利用截断,URL编码与空字节的使用,大小写变种的使用,以及嵌套剥离后的表达式等等。借助这些手段,输入构思后的查询可以避开输入过滤技术,从而使攻击者获得想要的查询结果。
7.推断技术
该技术能够明确数据库模式、提取数据以及识别可注入参数。此种方式的攻击通过网站,对用户输入的反馈信息、可注入参数、数据库模式等进行推断。这种攻击构造的查询,执行后获得的答案只有真、假两种。基于推断的注入方式主要分为时间测定注入与盲注入两种。时间测定注入是在注入语句里加入诸如“waitfor 100”的语句,按照此查询结果出现的时间,对注入能否成功和数据值范围的推导进行判定;盲注入主要包括“and l=l”、“and l=2”两种经典注入方法。这些方式均是对一些间接关联且能取得回应的问题进行提问,进而通过响应信息推断出想要的信息,然后进行攻击。