是否可以通过 SQL 注入从 MySQL 中的 INSERT/SELECT 语句启动 UPDATE/DELETE 语句?

发布于 2024-08-25 02:38:48 字数 528 浏览 7 评论 0原文

让我们采用以下易受攻击的查询($id 未转义):

SELECT * FROM table WHERE id = $id

在 MySQL 5.x 中是否有可能通过出现在 内部UPDATE 语句来修改某些数据黑客攻击了 SELECT 语句?

我考虑过使用 benchmark() 函数:

SELECT * FROM table WHERE id = id OR benchmark(1, (UPDATE ...))

但它似乎不起作用:

错误 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“UPDATE ...”附近使用的正确语法。

是否有其他不使用存储过程的可能性?

编辑:当然也不使用多个查询...

Let's take the following vulnerable query ($id not being escaped):

SELECT * FROM table WHERE id = $id

Would it be possible in MySQL 5.x to modify some data through an UPDATE statement which would appear inside the hacked SELECT statement?

I thought about something using benchmark() function:

SELECT * FROM table WHERE id = id OR benchmark(1, (UPDATE ...))

But it doesn't seem to work:

ERROR 1064 (42000): 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 'UPDATE ...

Any other possibilities not using stored procedure?

Edit: and nor using multiple queries of course...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独陪着我 2024-09-01 02:38:48

根据驱动程序的不同,这可能会通过:

SELECT * FROM table WHERE id = id; UPDATE table ...

Depending on the driver this may pass:

SELECT * FROM table WHERE id = id; UPDATE table ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文