清除注入sq里面的js木马l



declare @delStr nvarchar(500
set @delStr='<script src=http://8f8el3l.cn/0.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) 为char,varchar,nchar,nvarchar类型 
        select name from syscolumns where xtype in (231,167,239,175and 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(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= ''   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
posted @ 2009-07-30 11:51  麦兜很乖  阅读(421)  评论(0编辑  收藏  举报