SQL注入基础--判断闭合形式

这里写自定义目录标题

    • **
  • **SQL注入基础--判断闭合形式**
  • ## 1.整形闭合
    • 2.单引号闭合
    • 3.双引号闭合
    • 总结

**

SQL注入基础–判断闭合形式

SQL语句的闭合形式大概如下几种:

SELECT * FROM `users` WHERE id= 1;#整形闭合
SELECT * FROM `users` WHERE id='1'; #单引号闭合
SELECT * FROM `users` WHERE id="1";#双引号闭合
SELECT * FROM `users` WHERE id=('1');#单引号加括号
SELECT * FROM `users` WHERE id=("1");#双引号加括号

## 1.整形闭合

SELECT * FROM `users` WHERE id= 1;#整形闭合

模拟注入:

?id=1’
?id=1”

SELECT * FROM `users` WHERE id= 1;
SELECT * FROM `users` WHERE id= 1;

错误
在这里插入图片描述
在这里插入图片描述

2.单引号闭合

SELECT * FROM `users` WHERE id='1'; #单引号闭合

模拟注入:

?id=1’
?id=1”

SELECT * FROM `users` WHERE id= '1'';

报错
在这里插入图片描述

SELECT * FROM `users` WHERE id= '1"';

可以运行
在这里插入图片描述

如果写成这样:

?id=1’–+

SELECT * FROM `users` WHERE id= '1'-- ';

**mysql 不会把后面那个单引号注释掉,并且会把整个1’–作为查询条件,可以成功查询和1是一样的!**
任何闭合方式都这样在没有遇到相对应的闭合时,都会把这个符号当做一个整体,注释符也没用!!

3.双引号闭合

SELECT * FROM `users` WHERE id="1";#双引号闭合

模拟注入:

?id=1’
?id=1”

SELECT * FROM `users` WHERE id="1'";

在这里插入图片描述

SELECT * FROM `users` WHERE id="1"";

报错
在这里插入图片描述

总结

遇到SQL注入第一步判断闭合:
首先尝试:

?id=1’
?id=1”

1如果都报错,则为整形闭合。

2如果单引号报错,双引号不报错。
然后尝试

?id=1’–+

无报错则单引号闭合。
报错则单引号加括号。

3如果单引号不报错,双引号报错。
然后尝试

?id=1"–+

无报错则双引号闭合。
报错则双引号加括号。

多层括号同理

你可能感兴趣的:(sql注入,mysql,安全,php)