非空约束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.后台过滤特殊字符注册

posted @ 2019-10-18 16:09  WINDECODE  阅读(317)  评论(0)    收藏  举报