insert into table1(id, message) values ("xxx", ""-(select sleep(3))-"");
这个"sleep(3)"语句为什么能够执行?哪个大佬能帮忙解答下
insert into table1(id, message) values ("xxx", ""-(select sleep(3))-"");
这个"sleep(3)"语句为什么能够执行?哪个大佬能帮忙解答下
4 回答4.5k 阅读✓ 已解决
5 回答3.4k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
4 回答4.1k 阅读
3 回答3.7k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
""-(select sleep(3))-""
可以认为是一个算术表达式:""【空字符串】-【减去】select sleep(3)【查询结果】-【减去】""【空字符串】。题主可以将空字符串
""
换成任意数字字符串,如"5"
、"8"
,再将减号-
换成加号+
,可以得到不同的结果,这也从侧面验证了 SQL 执行器是将其理解为算术表达式。