mysql 注入中的问题

为什么我输入order by 4 不加 and '1'='1' 无法查询出来,但是加and '1'='1' 可以查询出来。
正常的不应该是查询不出来的吗?求da lao帮忙解答一下!

img

oder by 是排序,要放在sql语句的最后才生效,order by要指定一个字段,例如你的users表中有id,username,password,你可以以id为排序规则:

select * from users where id='1' order by id;

order by 放sql中间是不生效的,所以你的第二个sql其实等同于:

select * from users where id='1' and '1' = '1';

如果将order by 放在 '1' = '1'的后面就又会抛出同样的错误。

sql注入1=1攻击方式是指攻击者通过在SQL语句中插入特定的代码,来获得对数据库的非法访问和操作。其中1=1是一种常用的注入方式,它的意思是将SQL语句中的where条件改为1=1,这样就可以绕过原本的where条件,直接获取数据库中的全部数据。

谢谢,大佬们!