是否可以将"insert“语句(或任何其他更改数据库的语句)偷偷放入MySQL "select”语句中?
我之所以问这个问题,是因为我担心我发现了一个注入漏洞,但由于一次只能运行一条语句,而不管查询被损坏到包含多少条语句,因此它不会像'; drop database; --那样受到明显的破坏。但是如果后端正在执行像select bar from foo where param = '$improperly_escaped_input'这样的东西,有没有什么我可以输入的东西会危及我的数据库?
无论如何,该漏洞都需要纠正。但是,如果我可以展示一个如何利用它来篡改数据的示例,那么修复它将排在优先级队列的前面。
发布于 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()可能会执行不同的次数,这取决于优化器选择如何处理它。
https://stackoverflow.com/questions/9915278
复制相似问题