⊕ 网站首页 ⊕注册会员 ⊕ 本站免费电影 ⊕ 留言板 ⊕ 繁體中文
FireFox被突破 儿童可获Firefox浏览器下载量突破EasyShare v1.3突破电信IE7.0浏览器用户量突破3Leopard上市3天销量突破微软官方:Vista销量突破微软WGA正版验证次数已经Firefox下载量突破3亿人IE 7.0浏览器安装量突破IE 7发布4天 下载突破30
一、综述 有些XSS漏洞由于字符数量有限制而没法有效的利用,只能弹出一个对话框来YY,本文主要讨论如何突破字符数量的限制进行有效的利用,这里对有效利用的定义是可以不受限制执行任意JS.对于跨站师们来说,研究极端情况下XSS利用的可能性是一种乐趣;对于产品安全人员来说,不受限制的利用的可能是提供给开发人员最有力的证据,要求他们重视并修补这些极端情况下的XSS漏洞。 突破的方法有很多种,但是突破的思想基本都一样,那就是执行可以控制的不受限制的数据。 二、突破方法 2.1 利用HTML上下文中其他可以控制的数据 可控的安全的数据 alert(/xss/); 由于XSS点有字符数量限制,所以这里只能弹框,那么我们可以把XSS的Payload通过escape编码后作为安全的数据,输出到可控的安全数据位置,然后在XSS点执行可控的安全数据: eval(unescape(x.innerHTML)); 长度:28 + len(id) 由于x内部的数据没有字符数量的限制,那么从而可以达到执行任意JS的目的。 2.2 利用URL中的数据 长度:30 limited_xss_point>eval(location.href.substr(80)); 长度:31 上面两个例子对比,前一个例子更短,那么有没有办法更短呢?通过查阅t手册的String的方法可以发现,切割字符串有一个更短的函数slice,5个字符比substr还要短一个字符: 长度:29 eval(location.href.slice(80)); 长度:30 那么还有没有办法更短呢?答案是YES,查阅一下MSND里的location对象的参考你会发现有个hash成员,获取#之后的数据,那么我们可以把要执行的代码放在#后面,然后通过hash获得代码执行,由于获得的数据是#开头的,所以只需要slice一个字符就可以拿到代码: eval(location.hash.slice(1)); 长度:29 这样比上面的例子又少了一个字符。那么还可以更短么?
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |
Copyright © 2007 - 2009 chenpeng123.com All Rights Reserved 本站所有文章,软件等均来自网络收集,不代表本站观点,仅供学习和研究使用。如有侵犯您的版权,请联系我们,本站将立即删除。 鲁ICP备07014697号 你是本站第 位访客