Mysql (路由)共享参数上的SQL注入

Mysql (路由)共享参数上的SQL注入,mysql,sql,mariadb,sql-injection,Mysql,Sql,Mariadb,Sql Injection,我负责几个网站的安全。最近,我们购买了Acunetix WVS,并执行了几项测试,结果显示SQL注入是积极的。我不仅试图复制这些测试,而且还试图找出是否有可能提取相关信息,因为我们部署了WAF/IPS来缓解更关键的SQL注入 我显然不允许透露我目前正在测试的网站,因为我将把它称为 我发现页面上有两个查询用于显示结果。因此,这可能与路由SQL注入有关。我应用了几种SQL注入技术,通过错误消息,我发现它们的形式如下: SELECT 1 FROM ... WHERE group='1' LIMIT 0

我负责几个网站的安全。最近,我们购买了Acunetix WVS,并执行了几项测试,结果显示SQL注入是积极的。我不仅试图复制这些测试,而且还试图找出是否有可能提取相关信息,因为我们部署了WAF/IPS来缓解更关键的SQL注入

我显然不允许透露我目前正在测试的网站,因为我将把它称为

我发现页面上有两个查询用于显示结果。因此,这可能与路由SQL注入有关。我应用了几种SQL注入技术,通过错误消息,我发现它们的形式如下:

SELECT 1 FROM ... WHERE group='1' LIMIT 0,1

SELECT 1,2,3,4 FROM ... WHERE group='1' AND `user_type` NOT LIKE 'colaborators' ORDER BY 'name'
两个查询都显示在单独的
上<代码>用户类型表示URL上的
成员
。第一个查询显然很容易注入。我只需将URL更改为:

    http://example.com/show_results.php?group=1' union select database() -- - &query=
这里显而易见的问题是:例如,如何获取表名。比如:

GROUP_CONCAT(table_name) FROM information_schema.tables WHERE TABLE_SCHEMA=database()
这很棘手,因为两个查询都使用相同的
group
参数,因此它不是以最简单的形式完全路由SQL注入。大概是这样的:

    http://example.com/show_results.php?group=1' union select database() -- -&query=members

注意上面在
查询
参数上的差异。这向我展示了所使用的SELECT语句的列数不同的错误(显然是因为两个查询的列数不同)。

我不明白尝试设计一个有效的漏洞而不是修复漏洞的意义是什么?是的,正确过滤输入,并使用绑定。