(此文章是记录本人对知识理解的随手笔记,内容不肯定百分百正确,如有错误望指出并谅解)
?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语句不会报错,所以是字符型注入,这样就可以利用这一点来进行注入时的闭合操作。
可以查看另一篇文章来理解闭合操作的其中一个小用法:
SQL注入时order by 后面加数字的作用_头顶蜘蛛网,脚踩大水缸的博客-CSDN博客
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连接符连接时,整体就会是错误的 )。
参考文章:
版权归原作者 头顶蜘蛛网,脚踩大水缸 所有, 如有侵权,请联系我们删除。