A SQL injection attack consists of insertion or “injection” of a SQL query via the input data from the client to the application.
SQL注入是指攻击者从客户端把SQL语句注入到后台并执行,达到攻击的目的,可增删改查数据库内容,读写文件等。比如SQL语句
SELECT * FROM Customers WHERE ContackName LIKE ‘%mysoft%’
其中%mysoft%是从前端form传输到后端的,如果后端对于前端输入的数据没有做合适的校验,就可能就会造成SQL注入。
根据SQL注入获取信息的渠道,可以把SQL注入分为In-band注入,Out-of-band注入, Blind注入。
In-band注入(带内注入)是指在请求的Response中可以看到注入效果。最直观的例子是在Burpsuit的repeater中在response中可以看到注入效果。
Out-of-band注入(带外注入)是指注入的结果不在当前请求操作中返回,而是在其他通道中返回,有点类似于侧信道攻击。
Blind注入(盲注)是指没有response可以判断是否注入成功,服务器没有任何数据回显。这种情况下,可以通过sleep, benchmark时间延迟的方式判断注入是否成功。
攻击SQL注入的攻击技术,可以分为 Union型注入,Boolean型注入,Error-based型注入,Out-of-band型注入,Time delay型注入,等几类。
在做SQL注入测试前,首先尝试探测SQL服务器的型号和版本信息,可以用nmap尝试去扫描,或者是输入非法的字符让SQL语句执行报错,根据错误信息判断SQL服务器的型号和版本。
