gpt4 book ai didi

mysql - SQL注入(inject):是否可以修改select的子查询?

转载 作者:可可西里 更新时间:2023-11-01 07:35:48 25 4
gpt4 key购买 nike

是否可以在 SELECT 查询中使用子查询修改数据库?相关数据库为mysql数据库。

更多细节:相关查询如下所示:

SELECT * FROM table WHERE id = $x

变量$x 可以用任何东西代替。唯一的限制是,查询是通过 php 的 mysql_query() 执行的,这会阻止多个后续查询的执行。在那种情况下,修改数据库会很容易,只需设置

$x = "42; DROP TABLE foo;"

最佳答案

编辑:

mysql_query() 仅在 MySql 5.0 之前的版本中防止多重查询。 MySql 5.0 or later will allow multiple commands separated by ; when using mysql_query().

所以,是的,a SQL Injection attack能够执行用于连接到数据库的登录名有权执行的任何命令。

如果您使用管理员权限连接,攻击基本上可以对您的数据库进行任何可能的修改。

例如,假设您将 $email 值连接到下面的 SQL 字符串:

"SELECT email, passwd, login_id, full_name
FROM members
WHERE email = '" + $email + "'"

但是假设 $email 值包含字符串:

        x';INSERT INTO members ('email','passwd','login_id','full_name') 
VALUES ('steve@unixwiz.net','hello','steve','Steve Friedl');--

您最终得到以下语句:

SELECT email, passwd, login_id, full_name
FROM members
WHERE email = 'x';
INSERT INTO members ('email','passwd','login_id','full_name')
VALUES ('steve@unixwiz.net','hello','steve','Steve Friedl');--';

即使您用于连接到数据库的登录名不允许修改,SQL 注入(inject)攻击也可用于抓取您数据库中的每一位数据...

绝对建议您通过在客户端应用程序中使用某种形式的参数化查询来保护自己。

关于mysql - SQL注入(inject):是否可以修改select的子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com