mariadb 使用DELETE ... RETURNING从已删除的行中选择信息

rn0zuynd  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(159)

我正在学习SQL注入,目前正在努力解决以下问题。我有一个类似的查询:

SELECT first_name, last_name FROM users WHERE user_id = $id

并且我应该注入SQL代码来删除$id参数上的某个行。
由于服务器DBMS是MariaDB,因此我得出以下结论:
我的想法是在所选部分和使用返回选项删除的行之间进行并集。最终的查询如下所示:

SELECT first_name, last_name FROM users WHERE user_id = $id 
UNION 
SELECT first_name,null FROM (DELETE FROM users WHERE user_id=7 
                            RETURNING first_name)

这应该将删除的信息与最初查询的信息连接起来,并允许执行DELETE,这是这里的关键思想。

1; DELETE FROM users WHERE user_id=7

由于某种原因,我认为使用中的驱动程序不允许多查询或类似的东西。据我所知,返回方式应该工作,但它没有,我已经修改了几次,所以我不确定是否有一个限制,我不知道或什么,有人能帮助这个吗?
先谢谢你。

bwleehnv

bwleehnv1#

无论DELETE...RETURNING是否返回结果集,都不允许在子查询中使用。
同样,子查询中也不允许使用某些返回结果集的语句,如CALLSHOW
您只能在子查询中放入以下内容:

要在SQL注入中使用DELETE,要么必须有一个允许多查询的连接器接口,要么必须操作查询,使DELETE首先出现,然后注解掉查询的其余部分。

相关问题