当前位置: 首页 > 图文教程 > 网络编程 > ASP > ASP、Request对象与SQL注入

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

ASP、Request对象与SQL注入


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 99 ::
收藏到网摘: n/a

Request对象探讨

Request是ASP里的一个内部对象,用于获取HTTP请求中传递的任意信息(如头信息、表单数据、cookies等等)。所以这是在ASP里面最常用的内部对象,常用来获得GET方式提交的数据(Request.QueryString)、表单POST提交的数据(Request. Form)和Cookies(Request.Cookies)。

我们用Request对象可以指定获取某个特定方式提交的数据。比如我们用这段代码获得通过POST提交的数据lake2的值:request.Form("lake2");而request.queryString("CSDN")获得GET方式提交的CSDN的值。

对于获取HTTP数据,ASP还给了我们一个更简单的方法:request(key),即直接使用request而不指定数据集合。此时ASP会依次在QueryString、From、Cookies、ServerVariables、ClientCertificate、Browser中检查匹配的数据,若发现则返回数据。

上面6个集合中,ServerVariables、ClientCertificate和Browser的变量是固定了的;而QueryString、From、Cookies的变量可以任意指定。想不到Cookies可以拿来传递任意数据,以前倒没有注意。

OK,test一下先。在本地web目录新建test.asp文件,内容为:<%=request("b")%>

Step 1:直接访问http://127.0.0.1/test.asp?b=la<b>k</b>e2,浏览器显示lake2

Step 2:构造表单提交结果也如step 1

Step 3: 构造表单,GET传递b值为"He",同时POST的b为"She",浏览器显示为"He"。呵呵,按前面的排序有个优先级的

Step 4:Telnet到本地80端口,构造HTTP请求如下(注意Cookies哦):

GET /test.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; TencentTraveler ; .NET CLR 1.1.4322)
Host: 127.0.0.1
Connection: Keep-Alive
Cookie: b=lake2 , Success !

在一堆服务器响应数据之后,我们看到了"lake2,Success!"(Q:为什么空格不见了?A:因为未对提交的空格进行URL编码)。

到此,我们已理论和实际相结合的证明了Cookies可以拿来传递数据。

Request对象与SQL注入

现在把话题转一下,我们来说说SQL Injection。

SQL注入攻击是由于Web应用程序没有过滤用户所提交的有害数据而导致危害服务器的一种攻击手法。注意咯,这里涉及到提交数据,自然要跟刚才说了一大堆的request联系上啊。

归根结底,ASP下面的SQL注入都是由于request的参数没有过滤或者过滤不严。当然,程序员不是安全专家,他们可能不知道如何过滤。

嘿嘿,它遍历GET和POST,也就是Request对象的QueryString和From集合,忽略了Cookies。

现在,我们假设有一个SQL Injection漏洞百出的ASP程序,具备网络安全知识的管理员同学在网上下载并使用了传说中的"SQL通用防注入系统",但是很不幸,ASP程序中所有获取参数都是使用的request(key)……(呵呵,眼看着一个个封锁被突破,那是很enjoy的事情^_^)

这里仅仅是假设而已,至于实际中到底有多少ASP程序员喜欢用request(key) 来获取数据就不得而知咯。