Google XSS game writeup
2015-11-18 13:50
633 查看
用过Chrome的应该知道它的XSS Auditor,它可是灭掉了不少XSS代码呢……Google对XSS是很有研究的,不然也不敢大张旗鼓的悬赏(7500刀哦亲),还开发了一个XSS小游戏 http://xss-game.appspot.com/ (需FQ……),一共有6关,做完有“大蛋糕”奖励哦!下面就来看一下。
其中的变量url就是URL中#之后的内容,仔细观察正则式我们发现它是从开始进行匹配的,如果我们在#之后加个空格,再加上我们要加载的远程js全地址,会怎么样呢?成功绕过了该检查,弹框!
之后,便出现祝贺的蛋糕啦,啊哈!
Level 1: Hello, world of XSS
既然是“Hello world”级别的,想必就是简简单单弹个框在输入框里输入<script>alert(1)</script>,然后点击按钮提交,弹框了,轻松愉快。
Level 2: Persistence is key
这个类似评论框,<script>被过滤了,试试插入图片标签
<img src=# onerror=alert(1) />,提交后成功弹窗了,而且是存储型XSS,每次查看都会弹框
Level 3: That sinking feeling…
没有输入框,有三张图片可以切换,可以看到图片切换跟URL中#之后的数字有关系,查看源代码之后发现
<script>标签中有这么一句
html += "<img src='/static/level3/cloud" + num + ".jpg' />";,很明显是决定图片地址的,而num来自于
#后的输入,我们尝试注入,注入的时候要闭合语句,不要弄出语法错误,我的语句是
1.jpg' onload=alert(1) '1,这样就变成
<img src='/static/level3/cloud1.jpg' onload=alert(1) '1.jpg' ?>,这样,访问http://xss-game.appspot.com/level3/frame#1.jpg‘ onload=alert(1) ‘1,即可弹框
Level 4: Context matters
有输入框,是个定时器程序,查看timer.html的源代码发现<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />,其中的
timer就是输入框的输入,尝试注入并注意闭合语句,在输入框中输入
1'),alert(1) ('便可弹框。
Level 5: Breaking protocol
这个虽然也有输入框,但是提交后发生跳转,而且跳转到的网页跟刚才输入的东西好像没啥关系……查看signup.html源代码发现,是真的没关系……不过发现这么一句<a href="{{ next }}">Next >></a>,Next跳转后的地址是由URL中的变量
next决定的,于是我便想在此注入
signup" onmouseover=alert(1) ",结果双引号被转换成了
",对confirm.html页面的注入依旧无效,页面跳来跳去的就是不弹框……无奈之下看了看提示,想起对标签还有
href="javascript:alert(1)"这种执行js的方式啊,把next赋值成
javascript:alert(1),刷新该网页,然后点击“NEXT”,弹框!
Level 6: Follow the 🐇
这个的意思就是要加载一个外部的js代码来弹框,外部代码的地址为URL中#后面的内容。外部js代码可以使用XSS平台获得(搜一下就能找到),但是通过查看源码我们发现它对http(s)进行了检查过滤,相关代码如下
if (url.match(/^https?:\/\//)) { setInnerText(document.getElementById("log"), "Sorry, cannot load a URL containing \"http\"."); return; }
其中的变量url就是URL中#之后的内容,仔细观察正则式我们发现它是从开始进行匹配的,如果我们在#之后加个空格,再加上我们要加载的远程js全地址,会怎么样呢?成功绕过了该检查,弹框!
之后,便出现祝贺的蛋糕啦,啊哈!
相关文章推荐
- Choregographer工作原理分析
- 2015 南阳 CCPC hdu 5546 Ancient Go(DFS,暴力)
- Eucalyptus logo桉树云服务环境 Eucalyptus
- 学习django~~
- 异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案
- 如何使用Leangoo自动生成燃尽图
- 用Leangoo做敏捷需求管理
- UVa 990 - Diving for Gold
- Google Analytics 链接点击次数记录
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
- gokit 入门
- Polygon Table - Google Chrome
- HOTPOWER.【专注游戏界面外包】/接游戏界面外包/logo外包/icon
- Google MapReduce/GFS/BigTable三大技术的论文中译版
- codeforces 598D Igor In the Museum
- Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
- Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
- Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep