数据库
首页 > 数据库> > SQL注入基本知识

SQL注入基本知识

作者:互联网

SQL注入基本知识参考这个博客即可SQL注入

我主要想说一下自己在做sql注入过程中遇到的疑惑

例如:
数据库为
image

查询语句为

select * from userinfo where id='$_GET['id']'

此时闭合为单引号闭合,当判断注入类型时候,

输入1:SELECT * FROM userinfo WHERE id='1';,此时正常返回结果;

image

输入1':SELECT * FROM userinfo WHERE id='1'';,此时意料之中报错

image

输入1":SELECT * FROM userinfo WHERE id='1"';,此时本来预料会报错的,因为闭合类型错误,但是没想到竟然正确输出结果

image

当时遇到这种问题困扰好久:既然闭合类型为',为什么输入"时候没有报错,既然"没有报错,那么在SQL注入时候如何判断闭合类型呢,

为了查清楚原因所在,在数据库中不断测试,又换了一下别的符号
SELECT * FROM userinfo WHERE id='1a';

image
也是输出正确结果,不论1后面跟什么字符,除了单引号和数字,都能正常输出结果!

这时候倒不得不把问题聚焦到id本身上来,果然问题出现在这里,在数据库中看到,id为
int类型,这说明,当输入内容为1'时候,这时候因为正常闭合了前面的',所以会出现语法错误;但是当我们输入1"或者1a等等,这时候并没有闭合',我们输入的内容被当做普通字符了,而id是int类型,这里有一个隐式转换,自动把我们输入的转换为数字,所以只要1后面不跟',无论其他什么符号,都会被忽略,最终转为数字1查询到id=1所对应的结果!

标签:基本知识,闭合,报错,userinfo,SQL,WHERE,id,输入,注入
来源: https://www.cnblogs.com/cl-hj/p/15716596.html