我最近在我的网站上遭到了一些攻击,使用了NV32的用户代理。
它们都是针对查询字符串变量的以下注入攻击的一些变体(其中99999表示有效的查询字符串值,攻击附加到值):
(为方便起见,我已对以下攻击进行了解码)
999999 And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0
或
999999' And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0 and ''='
或
999999' And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0 and ''='
我相信sysobjects与Sql Server主数据库有关,但我无法弄清楚他们想要完成什么。
修改 我现在用两个不同的用户代理看到了同样的事情:
答案 0 :(得分:5)
我读了这两个方法,但我不是100%确定哪个:
And
而不是Or
。答案 1 :(得分:5)
我相信他们想要弄清楚的是你的应用程序是否容易受到SQL注入攻击。
Char(124)转换为|强制整个查询结果被视为连接两个管道的查询结果的字符。因此,您最终会得到数据库中包含两个管道的表数(例如| 1428 |)。当与>中的0比较时0导致错误,因为| 1428 |不是一个int。
因此,如果您的应用程序对SQL注入是开放的,他们现在知道它(因为有效的参数值导致应用程序出错)。如果SQL数据库错误冒泡到顶部,他们可能也知道您有错误的错误处理。如果你确实有错误的错误处理,他们也知道你有多少表(不确定它们有什么好处,但更多信息更好)。
许多SQL注入尝试实际上是为了让您的应用程序失败,以便知道您是易受攻击的。如果你确实处理错误,他们可能会尝试盲目的SQL注入你。
查看this以详细了解。
我希望你不是脆弱的,如果你运气好的话!
答案 2 :(得分:0)
惠普有一个免费工具,您可以运行该工具来检查您的站点(或任何站点)是否存在名为sdrawlr的SQL注入漏洞。 您可以下载here: