在普通的SQL查询中,对于Mysql版本> 5.0
Select A, B FROM table where id =1
如果攻击者为id参数注入1-sleep(10),为什么数据库会休眠?连字符在这里起什么作用?它不是无效的语法(整数和函数的算术运算)吗?
答案 0 :(得分:3)
https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_sleep说:
睡眠(暂停)持续时间参数给出的秒数,然后返回0。
换句话说,它返回一个整数,完全可以在算术表达式中使用。
连字符(-
)是arithmetic operator for subtraction。
我可以推断,当攻击者注入睡眠时,他们正在尝试测试您的代码是否容易受到SQL注入的攻击。当他们添加更长的睡眠时间时,他们可以对响应进行计时,以查看响应是否延长。这将确认他们可以通过其他方式利用您的代码。