XSS漏洞靶场闯关

目录

XSS闯关游戏

关卡Ma Spaghet!

关卡Jefff

关卡Ugandan Knuckles

关卡Ricardo Milos

关卡Ah That's Hawt

关卡Ligma

关卡Mafia

关卡Ok, Boomer

XSS闯关游戏

链接如下:XSS Game - Learning XSS Made Simple! | Created by PwnFunction

关卡Ma Spaghet!

要求为红框中在sandbox.pwnfunction.com中弹出1337,且没有用户交互(即不能使用需要用户点击的标签),不能使用https://sandbox.pwnfunction.com/?html=&js=&css=使用chrome浏览器测试。

在蓝色框中我们可以看到这个网站使用的代码,这里的innerhtml不会将<进行实体编码转译就直接展示在前端页面中,获取somebody的值,若是somebaoy为空则默认为somebody。因为get参数被分配给了somebody,以不安全的方式执行innerHtml。我么可以使用Img标签去触发,

那么我们输入?somebody=<img%20src=1%20οnerrοr="alert(1337)">即可跳出1337提示。

关卡Jefff

要求和上一个关卡一样,但是其代码不一样,get参数jeff在eval(`ma = "Ma name ${jeff}"`)中,我们需要跳出这个""限制,即我们可以先对eval进行一个"闭合再执行。

因此我们可以使用-来跳出,输入?jeff=aaa";alert(1337);",这里jeff=后面跟的可以为其他的都没关系,主要是后面要进行一个闭合执行我们的alert(1337)。

或输入?jeff=aaa"-alert(1337)-"也可行

关卡Ugandan Knuckles

要求与之前一样弹出框提示1337,这里的代码将<>过滤掉了,但是没有过滤",一般我们使用onclick点击事件去显示出弹窗,但是要求了不能有用户交互,所以有一个onfocus函数可以去执行,这个onfocus叫做焦点事件,而input是天生就有焦点的(焦点就是我们的鼠标光标就是焦点),我们输入?wey=aaa"οnfοcus="alert(1337),这需要我们按下tab建才能执行。

 

所以我们使用autofocus就可以完成,输入?wey=aaa"οnfοcus=alert(1337)%20autofocus=",没有交互也能执行。

关卡Ricardo Milos

这里也是一个get传参,有一个submit自动提交的事件,它会获取from表单的d在2秒以后进行action自动提交,传入一个ricardo,没有则默认提交#。在action这里存在一个尾协议的事情,

即输入?ricardo=javascript:alert(1337),两秒后自动提交后执行。在一般我们自己写的的html中是通过点击事件来进行一个体现,这里只不过是自动提交罢了。

关卡Ah That's Hawt

这里过滤了\'()。这里呢我们通过转译去进行一个使用%2528%2529去代替()使用location去绕过,即输入?markassbrownlee=<img%20src=1%20οnerrοr=location="javascript:alert%25281337%2529">。

关卡Ligma

这里过滤了字母和数字。我们就得使用URL编码或base64编码或者其他的编码方式去进行一个绕过了。jsfuck.com这个网站可以进行一个编码例如这里alert(1)编码后有很多+还需要进行URL编码才能使用,URL编码网站:URL 编码和解码 - 在线 (urlencoder.org)

再将这个编码内容放在?balls=后即可。

关卡Mafia

这里过滤了以上的符号还限制了长度50,这里还过滤了alert,但是我们还可以使用comfirm

或者使用prompt

这里我们不使用这个,这样做的话就没什么进步。我们有几种做法,第一种是直接定义函数,第二种是匿名函数,匿名函数将值赋给一个变量再去调用这个变量执行,第三种是构造函数(也是最常用的)。先构造一个函数var add = new function( 'x','y','return x+y');传入xy两个参数,返回x+y,使用时调用add就行。一句话则可以function()()后面括号中执行前面括号中的参数Function(/ALERT(1337)/.source.toLowerCase())(),中间的.source.toLowerCase()是为了将ALERT转为小写。即输入?mafia=Function(/ALERT(1337)/.source.toLowerCase())()即可,因为我本身的谷歌浏览器会将F变为f所以使用的虚拟机中的谷歌浏览器显示。

关卡Ok, Boomer

这里使用img src去绕过的话是绕不过去的因为这里使用的过滤的DOMPurify框架给过滤了。但是他在下面给了一个settimeout去执行ok中的变量,我们就可以通过去设置这个ok的变量去进行一个操作。

这里我们使用?boomer=<a id=ok href="javascript:alert(1337)">这里的意思是我们a这个标签,id=ok使得让后面href中的代码放在ok中2秒后自动执行,但这里我们使用的javascript没有任何变化是这个不在白名单内,我们就可以使用这个框架中的白名单中的一些协议,我在github中查到的有mailto、tel、cid、sms等……它允许的,我们就选择一个将其替换掉即可。

?boomer=<a id=ok href="mailto:alert(1337)">

?boomer=<a id=ok href="tel:alert(1337)">

?boomer=<a id=ok href="cid:alert(1337)">

主要就是创建ok这个元素,这个元素可以是字符串,且这个字符串是可以执行的函数或代码,这里创建ok这个元素会自动将href后的字符串拿出来进行调用。

以上就是XSS闯关游戏的八关基础关卡了。

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值