寻找SQL注入演示

时间:2012-04-12 18:48:03

标签: asp-classic sql-injection

我是一名Web应用程序开发人员,使用经典ASP作为服务器端脚本。

我总是使用一个简单的函数来保护我的应用程序免受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 个答案:

答案 0 :(得分:0)

我总是找到“sqli helper 2.7”(你可以下载它)来查找大部分/全部SQL注入。我不确定这是否会有所帮助,但它至少会帮助测试所有SQL注释和所有内容。我记得在我的一个网站上发现了一个主要的SQL注入来愚弄我的所有数据库数据。这不是你想要的,但它可能能找到一条出路。

答案 1 :(得分:-3)

对于以这种方式清理的输入,没有正常的SQL注入。缺点是从数据库中检索数据,你需要替换双撇号。

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