2012-04-12 41 views
-1

我是一个Web应用程序开发人员,使用经典ASP作为服务器端脚本。寻找一个SQL注入演示

我总是通过使用简单的函数为字符串参数加倍单撇号来保护我的应用程序免受SQL注入攻击。

Function ForSQL(strString) 
    ForSQL = Replace(strString, "'", "''") 
End Function 

对于数值参数,我使用CINT,CLng函数和CDbl功能。

我经常编写连接查询;我并不总是使用存储过程,我并不总是验证用户输入。

我想问你,如果有人能告诉我针对这行代码工作的攻击:

strSQL = "SELECT Id FROM tUsers WHERE Username='" & _ 
     ForSQL(Left(Request.Form("Username"),20)) & "' AND Password='" & _ 
     ForSQL(Left(Request.Form("Username"),20)) & "'" 

这可能是一个平庸的,但我从来没有发现一种攻击的作品。

+2

我问了一个类似的问题:http://stackoverflow.com/questions/8506574/sql-injection-isnt-replace-good-enough – 2012-04-12 18:51:54

+0

http://isc.sans.edu/diary.html?storyid=9397 – HeavenCore 2012-04-12 19:58:05

回答

-2

这种方式没有正常运行的SQL注入消毒输入。缺点是检索数据库中的数据是你必须替换双撇号。

sDataRetrievedFromDatabase = Replace(sDataRetrievedFromDatabase, "''", "'") 
+0

我很抱歉,但我不明白你的答案。我是意大利人,也许我无法正确理解英语。你能用一个例子来解释吗? – danylele 2012-04-12 22:37:46

+0

我添加了一个例子。 – 2012-04-12 22:47:26

+0

我看到你的例子。但我不明白为什么我必须用单引号替换双引号。当我在数据库中写入一个双数字...它只考虑一个。 – danylele 2012-04-12 23:03:14

0

我总是发现“SQLI助手2.7”(你可以下载),可以找到最/所有SQL注入。我不确定这是否会有所帮助,但它至少可以帮助测试所有SQL注释和所有内容。我记得在我的其中一个网站上发现了一个主要的SQL注入来贬低我所有的数据库数据。这不是你正在寻找的东西,但它可能能够找到一条途径。