非空约束SQL攻击
漏洞分析:
由于mysql进行了非空约束,在限制字符中写入超过限制长度的空字符。
之后在超过限制长度的最后一位添加一个字符,这时会无视掉空字符,这样就可以假冒用户进行攻击了。
通常漏洞发生在注册页面,下面进行一个攻击演示。
创建一个user表并插入一个admin账户。
create table user(id int not null auto_increment,username varchar(30) not null,password varchar(30) not null,primary key(id));
insert into user value('','admin','123456789');
通常后台登录判断,会经过一个这样的查询。

之后是注册的时候,会查询是否存在相同的账户,如果存在的话会禁止注册使用。

但是我们可以绕过这个判断,注册一个用户名为 admin 1 密码为123456777 的账户,那么sql语句应该是insert into user value('','admin','123456780');,成功进行注册。

使用我们创建好的用户和密码进行登录的话会显示成功查询。

漏洞修复方案:
1.后台过滤特殊字符注册

浙公网安备 33010602011771号