数字型注入
数字型注入就是指注入点的数据类型为数字型,没有用单引号引起来。代码示例如下:
- 在WHERE id=$ id这个SQL语句的句子中,$id变量没有用单引号或者双引号一起来,而是直接拼接到了后面,这便是典型的数字型注入。
- 判断数字型注入的方法:
- 输入单引号,不正常返回:
如果用户提交index.php?id=1‘,那么后面的SQL语句就会变成SELECT*FROM users WHERE id=1’ LIMIT 0,1,SQL语句本身存在语法错误,所以会有不正常回显。 - 输入and 1=1,正常返回:
如果用户提交了index.php?id=1 and 1=1,那么后面的SQL语句会变成SELECT*FROM users WHERE id=1 and 1=1 LIMIT 0,1,会有正常的结果返回。 - 输入and 1=2,不正常返回:
如果用户提交了index.php?id=1 and 1=2,那么后面的SQL语句会变成SELECT*FROM users WHERE id=1 and 1=2 LIMIT 0,1,会有不正常的结果返回。
字符型注入
字符型注入就是注入点的数据类型是字符型。与数字型的区别在于字符型注入要用一对单引号引起来。代码如下:
判断字符型的方法如下:
- 输入单引号,不正常返回:
如果用户提交index.php?id=1‘,那么后面的SQL语句就会变成SELECT*FROM users WHERE id=1’ LIMIT 0,1,SQL语句本身存在语法错误,所以会有不正常回显。 - 输入’ and ‘1’=‘1,正常返回
如果用户提交index.php?id=1’ and ‘1’ = '1,那么后面的SQL语句就会变成SELECT*FROM users WHERE id=‘id=1’ and ‘1’ = '1’LIMIT 0,1,会有正常回显。 - 输入’and’1’=‘2,不正常返回
如果用户提交index.php?id=1’ and ‘1’ = '2,那么后面的SQL语句就会变成SELECT*FROM users WHERE id=‘id=1’ and ‘1’ = '2’LIMIT 0,1,会有不正常回显。