0

我正在探索这个系统的 SQL 注入,发现即使使用参数化查询,正如SQL 注入预防备忘单所建议的那样,仍然可以执行 SQL 注入!

VB.NET 代码和查询:

Dim OleCommand As New OleDbCommand("SELECT name, age FROM people WHERE name LIKE '%' || ? || '%'", OleConnection)
OleCommand.Parameters.Add("name", OleDbType.VarChar).Value = txt_name.Text

成功使用的注入示例:

' UNION ALL select banner,null from v$version --
' UNION ALL select username,null from ALL_USERS --

在我所有的研究中(包括 Satckoverflow 中的一些主题),我总是阅读参数化查询如何足以防止 SQL 注入,所以我很惊讶它不是!

谁能给我一个关于如何以及为什么可能的详细解释?

先感谢您。

4

1 回答 1

0

嗯,好尴尬……

实际上开发团队并没有正确部署修复代码,所以我正在测试旧代码,因此漏洞似乎仍然存在。

简而言之:上面的代码实际上受到了 SQL 注入的保护!

抱歉耽搁了,感谢 Wolf 和 Steve 的想法。

于 2013-06-28T15:18:44.163 回答