8.2.2SQL注入漏洞分类 当查询内容为字符串时,SQL代码如下: select from table where username ='admin' 。 当攻击者进行SQL注入时,如果输入"admin and1=1”,则无法进行注入。因为"admin and1=1”会被数据库当作查询的字符串,SQL语句如下: select from table where username =admin and 1=1' ·这时想要进行注入,则必须注意字符串闭合问题。 如果输入“admin'and1=1-”就可以继续注入,SQL语句如下: select from table where username ='admin'and 1=1--' 只要是字符串类型注入,都必须闭合单引号以及注释多余的代码
8.2.2 SQL注入漏洞分类 当查询内容为字符串时,SQL代码如下: select * from table where username = 'admin' • 当攻击者进行SQL注入时,如果输入“admin and 1=1”,则无法进行注入。因为“admin and 1=1”会被数据库当作查询的字符串,SQL语句如下: select * from table where username = ' admin and 1=1' • 这时想要进行注入,则必须注意字符串闭合问题。 如果输入“admin' and 1=1--”就可以继续注入,SQL语句如下: select * from table where username = 'admin' and 1=1--' 只要是字符串类型注入,都必须闭合单引号以及注释多余的代码
8.2.2SQL注入漏洞分类 。例如,update语句: update Person set username='username',set password='password'where id=1 在对该SQL语句进行注入,就需要闭合单引号,可以在usemame或password处插入语 +(select @@version)+, 最终执行的SQL语句为: update Person set username='username',set password=''+(select @@version)+'' where id=1 利用两次单引号闭合才完成SQL注入
8.2.2 SQL注入漏洞分类 例如,update语句: update Person set username='username', set password='password' where id=1 在对该SQL语句进行注入,就需要闭合单引号,可以在usemame或password处插入语 “'+(select @@version)+'”, 最终执行的SQL语句为: update Person set username='username', set password=' ' +(select @@version)+' ' where id=1 利用两次单引号闭合才完成SQL注入
8.2.2SQL注入漏洞分类 3.SQL注入分类 √不同的数据库的比较方式不一样,但带入数据库查询时一定是字符串。所以,无论是POST注入,还是其他类 型注入,都可归纳为数字型注入或者字符型注入。 注:严格地说,数字也是字符串,在数据库中进行数据查询时,where id='1'也是合法的,只不过在查询条 件为数字时一般不会加单引号
8.2.2 SQL注入漏洞分类 3. SQL注入分类 不同的数据库的比较方式不一样,但带入数据库查询时一定是字符串。所以,无论是POST注入,还是其他类 型注入,都可归纳为数字型注入或者字符型注入。 注:严格地说,数字也是字符串,在数据库中进行数据查询时,where id = '1'也是合法的,只不过在查询条 件为数字时一般不会加单引号
8.2.3 SQL Sever数据库注入 对大多数数据库而言,SQL注入的原理基本相似,因为每个数据库都遵循一个SQL语法标准。但 它们之间也存在许多细微的差异,包括语法、函数的不同。所以,在针对不同的数据库注入时, 思路、方法也不可能完全一样。以SQL Server2008数据库的注入作为实例说明。 ● 攻击者对数据库注入,无非是利用数据库获取更多的数据或者更大的权限,那么利用方式可以归 为以下三大类: 查询数据 读写文件 执行命令
8.2.3 SQL Sever数据库注入 对大多数数据库而言,SQL注入的原理基本相似,因为每个数据库都遵循一个SQL语法标准。但 它们之间也存在许多细微的差异,包括语法、函数的不同。所以,在针对不同的数据库注入时, 思路、方法也不可能完全一样。以SQL Server 2008数据库的注入作为实例说明。 攻击者对数据库注入,无非是利用数据库获取更多的数据或者更大的权限,那么利用方式可以归 为以下三大类: • 查询数据 • 读写文件 • 执行命令
8.2.3 SQL Sever数据库注入 ·1.利用错误消息提取信息 √SQL Server是一个非常优秀的数据库,它可以准确地定位错误消息,对开发人员来这来者是一 件十分美好的事情,对攻击者来说也是一件十分美好的事情,因为攻击者可以通过错误消息提取 数据。 (1)枚举当前表及列 现在有一张表,结构如下: create table users id int not null identity(1,1) username varchar(20)not null, password varchar(20)not null, privs int not null, email varchar(50))
8.2.3 SQL Sever数据库注入 1. 利用错误消息提取信息 SQL Server是一个非常优秀的数据库,它可以准确地定位错误消息,对开发人员来这来者是一 件十分美好的事情,对攻击者来说也是一件十分美好的事情,因为攻击者可以通过错误消息提取 数据。 • (1)枚举当前表及列 现在有一张表,结构如下: create table users ( id int not null identity(1, 1) username varchar (20) not null, password varchar (20) not null, privs int not null, email varchar(50) )