Nat*_*han 5 sql-server security sql-injection
我最近在我的网站上遭到了一些攻击,其中一个是用户代理NV32ts.
它们都是针对查询字符串变量的以下注入攻击的一些变体(其中99999表示有效的查询字符串值,攻击附加到值):
(为方便起见,我已经对以下攻击进行了解码)
999999 And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0
Run Code Online (Sandbox Code Playgroud)
要么
999999' And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0 and ''='
Run Code Online (Sandbox Code Playgroud)
要么
999999' And char(124)+(Select Cast(Count(1) as varchar(8000))+char(124) From [sysobjects] Where 1=1)>0 and ''='
Run Code Online (Sandbox Code Playgroud)
我相信sysobjects与Sql Server主数据库有关,但我无法弄清楚他们想要完成什么.
编辑: 我现在已经看到两个不同的用户代理相同的事情:
我读了这两个方法,但我不是100%肯定哪个:
And而不是Or.我相信他们想要弄清楚的是你的应用程序是否容易受到SQL注入攻击.
Char(124)转换为| 强制整个查询结果被视为连接两个管道的查询结果的字符.因此,您最终会得到数据库中包含两个管道的表数(例如| 1428 |).当与> 0中的0进行比较时,会导致错误,因为| 1428 | 不是一个int.
因此,如果您的应用程序对SQL注入是开放的,他们现在知道它(因为有效的参数值导致应用程序出错).如果SQL数据库错误冒泡到顶部,他们也可能知道您有错误的错误处理.如果你确实有错误的错误处理,他们也知道你有多少表(不确定它们有什么好处,但更多信息越好).
许多SQL注入尝试真正意味着导致您的应用程序失败,以便知道您是易受攻击的.如果你确实处理好错误,他们可能会尝试盲目的SQL注入你.
看看这个就看详细了.
我希望你不是脆弱的,如果你运气好的话!
| 归档时间: |
|
| 查看次数: |
5270 次 |
| 最近记录: |