update Bn_Middle_News set Class_Id=replace(CAST(Class_Id AS varchar(8000)),'</title><script src=http://google-stats47.info/ur.php></script>','')
update Bn_Middle_News set News_Title=replace(CAST(News_Title AS varchar(8000)),'</title><script src=http://google-stats47.info/ur.php></script>','')
update Bn_Middle_News set News_Content=replace(CAST(News_Content AS varchar(8000)),'</title><script src=http://google-stats47.info/ur.php></script>','')
update Bn_Middle_News set News_Time=replace(CAST(News_Time AS varchar(8000)),'</title><script src=http://google-stats47.info/ur.php></script>','')
update Bn_Middle_News set Bn_Hits=replace(CAST(Bn_Hits AS varchar(8000)),'</title><script src=http://google-stats47.info/ur.php></script>','')
以上几句,当字段本身的数据类型为text时,就有错误,我改成网上的解决办法
update Bn_Middle_News set News_Content=replace(convert(varchar(8000),News_Content),'</title><script src=http://google-stats47.info/ur.php></script>','')
还是错误,这是什么原因啊?大家帮帮忙啊?我网站中毒了。

解决方案 »

  1.   

    replace的用法
    replace(‘’,‘’,‘’)
    第一个参数是字段,第二个是要替换的,第三个是要替换成什么的

    replace('abc_d','_','')  结果是 abcd
      

  2.   

    text,ntext,image
    这些是不支持replace函数的
      

  3.   

    update Bn_Middle_News set [News_Content]=replace([News_Content],'</title><script src=http://google-stats47.info/ur.php></script>','')
    杯具!暂时这样处理!解决需要找到注入点,检查代码或漏洞。
      

  4.   

    参考下面的脚本:               --SQL Server TEXT类型字段字符串替换示例处理脚本/*--text字段的替换处理  
      --*/  
      --创建数据测试环境  
    --create   table   #tb(aa   text)
    declare @s_str varchar(8000),@d_str varchar(8000),  --定义替换的字符串 
            @p varbinary(16),@postion int,@rplen int,@i_Start int, @i_End intselect identity(int,1,1) as [id],newsid into # from news
    select @i_Start=min([id]),@i_End=max([id]) from #
    while (@i_Start<=@i_End)
    begin 
      --insert into #tb(aa) select content from # where [id]=@i_Start
      select   @s_str='\'   --要替换的字符串  
      ,@d_str='!' --替换成的字符串     
      --字符串替换处理       
      select   @p=textptr(content),@rplen=len(@s_str),@postion=charindex(@s_str,content)-1 from news where newsid in (select top 1 newsid from # where [id]=@i_Start) 
      while   @postion>0  
      begin  
        updatetext   news.content   @p   @postion   @rplen   @d_str  
        select   @postion=charindex(@s_str,content)-1  from news where newsid in (select top 1 newsid from # where [id]=@i_Start)
      end 
      --truncate table #tb
     
      select @i_Start=@i_Start+1
    end
     
    --删除数据测试环境  
    --drop   table   #tb 
    drop table #
      

  5.   

    text,ntext,image
    这些是不支持replace函数的
    那我怎么替换啊?
    claro的方法试过了,还是错误。
    需要UPDATETEXT也不行啊
    zsh0809的看不懂哦不敢随便运行