为什么在SQL注入中使用负数?

问题描述 投票:-2回答:2

通常,'符号用于标识某些站点是否容易受到SQL注入的攻击。

127.0.01/index.php/?id=1的常规SQL查询示例

SELECT username,password FROM db.table WHERE id = '1'

这是因为'用于中断SQL语句,并且由于'中附加了/?id=1'符号而将导致错误。>

SELECT username,password FROM db.table WHERE id = '1''

顺便说一句,该语法应该产生SQL错误,因为缺少另一个',但是没有。

mysql> SELECT username,password FROM db.table ID = 1';                                                                                                      '> 
    '> 
    '> 

但是,我仍然能够在Linux Shell中重现该错误。

wolf@Linux:~$ mysql -u root -e "SELECT username,password FROM db.table WHERE ID = 1'"
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
wolf@Linux:~$ 

但是在某些情况下,使用负数,例如/?id=-1

我没有得到这部分,因为无效值,例如-1或表范围之外的任何数字在SQL上都不会产生任何结果。

mysql> SELECT username,password FROM db.table WHERE ID = 9999;
Empty set (0.00 sec)

mysql> SELECT username,password FROM db.table WHERE ID = -1;
Empty set (0.00 sec)

如果有人可以解释这一点,我将不胜感激。谢谢

通常,'符号用于标识某些站点是否容易受到SQL注入攻击。 127.0.01 / index.php /?id = 1 SELECT用户名的普通SQL查询示例,密码来自db.table WHERE id ...

php mysql sql-injection
2个回答
0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.