【发布时间】:2015-08-21 14:06:24
【问题描述】:
您好,我正在对我正在开发的网站进行安全测试。一些开发人员试图通过用双引号替换每个单引号来避免 SQL 注入。这是 C# 代码:
string sql =
@"SELECT *
FROM users
WHERE us_username = '$us'
AND us_password = '$pw'";
sql.Replace("$pw", txtPassword.Text.Replace("'","''"));
有什么方法可以执行 SQL 注入攻击?我已经尝试过 Unicode 技巧,但没有奏效。数据库在 SQL Server 2008R2 上运行。
【问题讨论】:
-
可能是的,但是不要试图弄清楚如何,您应该只用湿面条执行开发人员,然后重做他们的代码以使用已经防注入的正确方法。选择 100% 的解决方案,而不是 99.9% 的“也许”。
-
是的,你可能是对的,但我不会有时间修复它,除非我可以破解它并证明它的弱点。
-
如前所述,答案可能是肯定的。如果您正在寻找可以提供证据的人,您可能需要指定您使用的数据库,因为漏洞利用会因数据库而异。
-
@sstan 我添加了数据库规范,SQL Server 2008 R2。而 txtPassword 文本框的值来自于一个经典的 ASP.net webforms 文本框。
标签: c# sql sql-server sql-injection code-injection