首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在"select“语句中偷偷插入"insert”吗?

你能在"select“语句中偷偷插入"insert”吗?
EN

Stack Overflow用户
提问于 2012-03-29 04:38:44
回答 1查看 1.2K关注 0票数 3

是否可以将"insert“语句(或任何其他更改数据库的语句)偷偷放入MySQL "select”语句中?

我之所以问这个问题,是因为我担心我发现了一个注入漏洞,但由于一次只能运行一条语句,而不管查询被损坏到包含多少条语句,因此它不会像'; drop database; --那样受到明显的破坏。但是如果后端正在执行像select bar from foo where param = '$improperly_escaped_input'这样的东西,有没有什么我可以输入的东西会危及我的数据库?

无论如何,该漏洞都需要纠正。但是,如果我可以展示一个如何利用它来篡改数据的示例,那么修复它将排在优先级队列的前面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 04:46:27

修改数据只是Sql注入漏洞的一个方面。即使只有读权限,攻击者也可以提升他们的权限,或者使用Blind Sql Injection攻击从您的数据库中抓取每一位数据。

我想不出有什么办法可以在select语句中修改数据……但是,are you sure that you're only able to run a single command at a time

无论如何,其他攻击载体应该足以构成威胁,从而提高问题的优先级。

编辑:Data modification is allowed in MySql sub-queries

MySQL允许子查询引用具有数据修改副作用(如向表中插入行)的存储函数。例如,如果f()插入行,则以下查询可以修改数据:

SELECT ... WHERE x IN (SELECT f() ...);

此行为是非标准的( SQL标准不允许)。在MySQL中,它可以产生不确定的结果,因为对于给定查询的不同执行,f()可能会执行不同的次数,这取决于优化器选择如何处理它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9915278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档