SELECT 和 UPDATE 查询中的行?
SELECT and UPDATE rows at the query?
我正在尝试找到一种方法,在 MySQL 服务器上使用相同的指令合并 select 查询和更新。这听起来像是一个重复的问题,但我的需求与我的前任不同。
我实际上正在寻找一条 SQL 指令,因为我不能使用事务或将它们一分为二。目标是绕过只允许一个 select 查询通过的安全措施。这不是为了任何违法行为,这是为了我大学的安全 class,目标是绕过一个定制的系统,该系统特别容易受到 SQL 注入的攻击。
我可以执行注入并进行任何 select、注入登录等等,但是这部分更新是一个挑战。
我尝试了我能想到的一切,寻找一种混合它们的方法,我什至想过在内部查询上放置一个 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’");
更新:我接受了更接近 'not possible' 的答案。但对此事的进一步搜索得出的结论是,这更多是关于用于连接器的 API 而不是 DBMS 安全功能本身,这实际上是因为 DBMS 和可接受的用途和语法。
关于在 SELECT 上嵌入 UPDATE 语句的方法的问题,我发现这是不可能的 - 至少在我的知识范围内是不可能的。
关于攻击,当程序员使用 API 允许这样的事情时,可以使用堆栈语句 - 这种情况很少见,但存在。结论是,整个事情似乎必须完成。
我不熟悉 MySQL
,但根据我的 SQL Server
经验,我可以告诉你,你不能将 SELECT
和 UPDATE
语句都在一个查询中。
此外 - 任何现代数据库系统都应该足够智能,以防止您尝试使用 [潜入数据库 UPDATE
SELECT
语句,从而绕过您的数据库权限。
我相信如果您将更新与 SELECT 查询捆绑在一起,MySQL 不会愚蠢地允许您进行更新 - 并不是说这是可能的。
因此在我看来 - 你可能正在追寻一个死胡同,而不是 allowed/possible。
我正在尝试找到一种方法,在 MySQL 服务器上使用相同的指令合并 select 查询和更新。这听起来像是一个重复的问题,但我的需求与我的前任不同。
我实际上正在寻找一条 SQL 指令,因为我不能使用事务或将它们一分为二。目标是绕过只允许一个 select 查询通过的安全措施。这不是为了任何违法行为,这是为了我大学的安全 class,目标是绕过一个定制的系统,该系统特别容易受到 SQL 注入的攻击。 我可以执行注入并进行任何 select、注入登录等等,但是这部分更新是一个挑战。
我尝试了我能想到的一切,寻找一种混合它们的方法,我什至想过在内部查询上放置一个 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’");
更新:我接受了更接近 'not possible' 的答案。但对此事的进一步搜索得出的结论是,这更多是关于用于连接器的 API 而不是 DBMS 安全功能本身,这实际上是因为 DBMS 和可接受的用途和语法。
关于在 SELECT 上嵌入 UPDATE 语句的方法的问题,我发现这是不可能的 - 至少在我的知识范围内是不可能的。
关于攻击,当程序员使用 API 允许这样的事情时,可以使用堆栈语句 - 这种情况很少见,但存在。结论是,整个事情似乎必须完成。
我不熟悉 MySQL
,但根据我的 SQL Server
经验,我可以告诉你,你不能将 SELECT
和 UPDATE
语句都在一个查询中。
此外 - 任何现代数据库系统都应该足够智能,以防止您尝试使用 [潜入数据库 UPDATE
SELECT
语句,从而绕过您的数据库权限。
我相信如果您将更新与 SELECT 查询捆绑在一起,MySQL 不会愚蠢地允许您进行更新 - 并不是说这是可能的。
因此在我看来 - 你可能正在追寻一个死胡同,而不是 allowed/possible。