有没有办法更新一个表,并在一个语句中选择它?

Posted

技术标签:

【中文标题】有没有办法更新一个表,并在一个语句中选择它?【英文标题】:Is there a way to update a table, and select it within one statement? 【发布时间】:2017-04-08 01:50:14 【问题描述】:

我目前正在本地主机 Web 应用程序上练习 SQL 注入。为了成功地做到这一点,必须在语句中返回一个值(通过使用SELECT)。我正在尝试更改用户的密码:

changepwd', (UPDATE mysql.user SET authentication_string=PASSWORD('new password') 
             WHERE user='root' UNION SELECT authentication_string from mysql.user)) #

对于 SQL 注入,您不能使用 ;。我在那个例子中尝试了UNION,看看它是否可行,但没有运气。我可以尝试其他任何想法吗?

【问题讨论】:

这对于 Postgres 来说非常简单。您使用的是哪个 DBMS? 【参考方案1】:

我认为这个问题的答案是here。

简而言之,答案是创建一个存储过程。

【讨论】:

一般来说这是要走的路,但他问的是sql注入,所以创建SP不是一个选项 那是不是可以注入、处理和调用呢?也许通过更改分隔符并运行多个调用。 (不知道有没有可能,没测试过)

以上是关于有没有办法更新一个表,并在一个语句中选择它?的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套的dict中选择一个随机值,并在另一个嵌套的dict中更新它

当在不同的选择中选择一个选项时,有没有办法显示/隐藏某些选项并在选择中显示/隐藏其他选项?

Sql 从一个表列中选择一个最小值,并在一个 SQL 语句中将结果插入到另一个表列中

为啥 select 语句没有从数据库表中选择所有行?它每次都忽略第一个条目

当在不同的选择中选择一个选项时,有没有办法显示/隐藏某些选项并在选择中显示/隐藏其他选项?

Oracle MERGE语句