你可以将"插入"隐藏到"选择"声明中吗?

Bla*_*ppo 3 mysql sql-injection

是否有可能将"插入"语句(或任何其他更改数据库的语句)隐藏到MySQL"select"语句中?

我问,因为我担心我发现了一个注入漏洞,但是'; drop database; --由于只能一次运行一个语句,无论查询被破坏包含多少语句,它都可以避免明显的混乱.但是如果后端正在执行类似的select bar from foo where param = '$improperly_escaped_input'东西,我可以输入哪些内容会损害我的数据库吗?

无论如何,都需要纠正此漏洞.但是,如果我可以展示一个如何利用它来搞砸数据的例子,那么修复它就会在优先级队列中上升.

Mic*_*son 5

修改数据只是Sql Injection漏洞的一个方面.即使只具有读取权限,攻击者也可以提升其权限,或使用Blind Sql Injection攻击从数据库中清除最后一点数据.

我想不出一种方法可以在select语句中修改数据...但是,你确定你一次只能运行一个命令吗?

无论如何,其他攻击媒介应该足以威胁到提高问题的优先级.

编辑:MySql子查询中允许数据修改:

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

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

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