mysql - 查询中的 SELECT 和 UPDATE 行?

标签 mysql sql security sql-injection

我正在尝试找到一种方法,在 MySQL 服务器上使用相同的指令合并选择查询和更新。这听起来像是一个重复的问题,但我的需求与我的前任不同。

我实际上正在寻找单个 SQL 指令,因为我不能使用事务或将它们一分为二。目标是绕过只允许一个选择查询通过的安全措施。这不是为了任何违法行为,这是为了我大学的安全类(class),目标是绕过一个定制的系统,该系统特别容易受到 SQL 注入(inject)的攻击。 我可以执行注入(inject)并进行任何选择,使用注入(inject)登录等等,但是这部分更新是一个挑战。

我尝试了我能想到的一切,寻找一种混合它们的方法,我什至想过在内部查询上放置一个 Update 语句,但语法显然是错误的。

有什么想法吗?如果不可能,我们非常欢迎提供有关如何攻击目标和生成更新的建议。


这是一个远景,显然是错误的,但我认为这可能有助于理解我想要实现的目标:

SELECT *
FROM user
WHERE (name = 'admin') and exists (
UPDATE user
SET pass='test'
WHERE name='peter');-- OR email = 'admin') AND pass = ’t’..

目标:

$sel1 = mysql_query ("SELECT ID, name, locale, lastlogin, gender,
        FROM USERS_TABLE
        WHERE (name = ’$user’ OR email = ’$user’) AND pass = ’$pass’");

更新:我接受了更接近“不可能”的答案。但对此事的进一步搜索得出的结论是,这更多是关于用于连接器的 API,而不是 DBMS 安全功能本身,这实际上是因为 DBMS 以及可接受的用途和语法。

关于在 SELECT 上嵌入 UPDATE 语句的方法的问题,我发现这是不可能的 - 至少在我的知识范围内是不可能的。

关于攻击,当程序员使用允许这种事情的 API 时,可能会使用堆栈语句——这种情况很少见,但确实存在。结论是,整个事情似乎必须完成。

最佳答案

我不熟悉MySQL但来 self 的 SQL Server经验 我可以告诉你,你不能结合 SELECT UPDATE 语句都在一个查询中。

此外 - 任何现代数据库系统都应该足够智能,以防止您试图潜入数据库 UPDATE 使用 SELECT 声明,从而规避您的数据库权限。

如果您将 MySQL 与 SELECT 查询捆绑在一起,我相信 MySQL 不会愚蠢地允许您进行更新 - 并不是说​​这是可能的。

因此在我看来 - 你可能正在追逐这里的死胡同,这是不允许/不可能的。

关于mysql - 查询中的 SELECT 和 UPDATE 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982102/

相关文章:

mysql - 在 mysql 中存储密码...使用哈希对吗?但是如何向用户发送忘记的密码呢?

mysql - Sphinx 获得数百万结果

sql - Red-Gate SQL 源代码控制 (SSC) 中的链接表 - 性能噩梦?

java - 在 Java SE 1.7 中使用 ECC

mysql - 如何保护 mysql 表免受意外批量更新

c# - 我的 SQL 准备语句不起作用

mysql - 如何在 MySQL 中执行此查询,我应该使用左连接、右连接或内连接使用哪一个?

mysql - SQL 选择不匹配特定选择的地方

java - asp.net 是否像 java 服务器平台一样容易受到对象序列化的影响

security - 如何使用 check 防止恶意 Meteor 订阅