由于网站后台在进行数据库查询的时候没有对单引号进行过滤,当输入用户名admin
和万能密码2'or'1
时,执行的SQL语句为Select user_id,user_type,email From users Where user_id=' admin' And password='2'or'1'
.同时,由于SQL语句中逻辑运算符具有优先级,=
优先于and
,and
优先于or
,且适用传递性。因此,此SQL语句在后台解析时,分成两句Select user_id,user_type,email From users Where user_id='admin' And password = '2'
和1'
,两句bool值进行逻辑or运算,恒为TRUE。SQL语句的查询结果为TRUE,就意味着认证成功,也可以登录到系统中。
暂无评论