首页 文章

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

提问于
浏览
3

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

我问,因为我发现了一个注入漏洞,但是由于只能够一次运行一个语句,无论查询被破坏包含多少语句,它都可以防止像_2485761这样明显的混乱 . 但是如果后端正在执行像 select bar from foo where param = '$improperly_escaped_input' 这样的东西,那么我可以输入什么会损害我的数据库吗?

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

1 回答

  • 5

    修改数据只是Sql Injection漏洞的一个方面 . 即使只具有读取权限,攻击者也可以提升其权限,或使用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()可能会针对给定查询的不同执行执行不同的次数,具体取决于优化程序选择如何处理它 .

相关问题