SQL插入查询在select或where子句中

时间:2015-06-29 22:04:35

标签: mysql

也许上面的问题可能是愚蠢的,但我只是想知道是否可以在select或where中插入查询。

我想知道的原因是,如果有人破解网站或任何应用程序数据库,黑客是否可以在我不知情的情况下将数据输入到被黑客攻击的数据库?

我在其他站点中看到的以下SQL注入示例

http://www.example.com/empsummary.php?id=1 AND 1=-1 union select 1,group_concat(name,0x3a,email,0x3a,phone,0x2a),3,4,5,6,7,8,9 from employee

我知道上面的查询到底是做什么的,但是黑客可以在数据库或任何表上输入(使用插入查询)吗?

1 个答案:

答案 0 :(得分:1)

是的,如果数据库接口配置为允许查询中的多个语句,则可能发生这种情况。

INSERT无法作为SELECT语句的一部分运行。但是利用漏洞可能会完成SELECT然后执行单独的插入。

说你有这样一个易受攻击的陈述:

 SELECT foo FROM bar WHERE fee = '$var'

考虑$var包含的SQL文本:

 1'; INSERT INTO emp (id) VALUES (999); -- 

SQL文本可能是这样的:

 SELECT foo FROM bar WHERE fee = '1'; INSERT INTO emp (id) VALUES (999); --'

如果在数据库接口库中启用了多语句查询,则可以想象可以执行INSERT语句。

请参阅:https://www.owasp.org/index.php/SQL_Injection