0x01 原理介绍
1、假如我们注册一个username
,password
,此时数据库中对username
字段长度做了限制。当username
超过长度时,数据库就会截断username
(此时数据库的模式必须为ANSI
模式,set @@sql_mode=ANSI;
)
2、mysql查询时会自动忽略掉后面的空白字符。(实际原理时,查询时mysql会用空格补齐两个比较的字段)
3、例如:我们注册的账号为“admin 1”
,假如超过了长度,此时就会截断,将1去掉,此时我们注册的账号就会变为"admin "
4、当我们用这个账号登录时,就会造成这个情况
SELECT * FROM users WHERE username='admin ';
等同于SELECT * FROM users WHERE username='admin';