SQL注入时?id=1 and 1=1和?id=1 and 1=2的功能

(此文章是记录本人对知识理解的随手笔记,内容不肯定百分百正确,如有错误望指出并谅解)

?id=1 and 1=1 :

?id=1 and 1=2 :

?id=1 :

结论:

若在GET请求中?id=1 and 1=1和?id=1 and 1=2都没有报错,则是字符型注入。

若在GET请求中?id=1 and 1=1没有报错,但是?id=1 and 1=2有异常或没回显,则是数字型注入。

证明:

1、 若注入 ?id=1 and 1=2 ,则数据库中查询语句为:

select * from user where id=1 and 1=2;

因为id为int类型,所以传入的 ‘1 and 1=2’ 会强制转换成 ‘1’ ,=>最终数据库中的查询语句为:

select * from user where id=1;

所以sql语句不会报错,所以是字符型注入,这样就可以利用这一点来进行注入时的闭合操作。

可以查看另一篇文章来理解闭合操作的其中一个小用法:

2、

若是数字型注入,注入 ?id=1 and 1=2 时的SQL语句为:

select * from users where id=1 and 1=2

因为 select * from users where id=1 是正确的语句 ,and 后面的 1=2 是错误的语句,所以select * from users where id=1 and 1=2 会有异常或着网页没有回显(当一个错误的语句和一个正确的语句用and连接符连接时,整体就会是错误的 )。

经验分享 程序员 微信小程序 职场和发展