xss-labs通关攻略

第1关

查看源代码,可以发现get传参的name值test插在了HTML代码中

那么我们可以直接url处插入一段js弹窗

第2关

我们可以先试一试上关的办法

这里我们发现不起作用,按F12查看一下源代码

这里我们可以看到我们的js代码被当作了value值,我们需要跳出value,让网站识别到我们的js代码

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

第3关

我们先随便输入一个,然后去看页面源代码,这里我们输入了123456

这里我们可以看到他是单引号闭合的,与上关一样,跳出value。

发现还是不成功,查看源码,我们发现我们的<>被转义了

那我们就试试onfocus事件绕过:

onfocus事件在元素获得焦点时触发,最常与 <input>、<select> 和 <a> 标签一起使用,以上面图片的html标签<input>为例,<input>标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

' οnfοcus=javascript:alert() '

再次点击输入框即可

第4关

我们直接查看源代码

与上关一样,依然在input标签内,只是双引号闭合,我们继续使用onfocus事件

" οnfοcus=javascript:alert() "

第5关

查看页面源码

我们试一试上关的方法

发现没有成功,再查看源码

这里我们的on变成了o_n,那我们就换一个标签,我们使用a标签,利用里面的href属性来实现我们的目的

href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码

"> <a href=javascript:alert()>xxx</a> <"

第6关

这一关我们先试试第五关的办法

看一下源代码

这一关发现href也被过滤了,

不过我们想起html的大小写不敏感(注意⚠️:是html不敏感,js是大小写敏感的)

于是大小写绕过

"><a HrEf="javascript:alert()">alert<a>

第7关

还是用上关的方法试试

查看源代码

发现href不见了,script也不见了,那我们可以试试双写绕过

"><a hrHrEfef="javascrscriptipt:alert()">alert<a>

第8关

试试上关的办法

查看源代码

发现上面框输入什么,下面的href也跟着变,于是直接输入javascript:alert(),发现script被过滤,大小写不能绕过,后来才发现可以进行unicode编码绕过

第9关

用上一关的办法试试

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

这关为白名单绕过,白名单就是http://

所以我们需要在我们的payload中加上http:// 同时让他不能影响到我们的payload,最简单的办法就是注释它。所以我们直接在第八关的payload上加上/*http://*/

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;/*http://*/

第10关

这关通过源代码可以看到有三个隐藏的input框,我们可以试试用get传参把三个都试一试,最后发现第三个成功了

https://xssaq.com/yx/level10.php?keyword=well%20done!&t_sort=1%22%20οnclick=javascript:alert()%20type=text

第11关

我们还是先用上一关的办法试试

查看页面源代码

表单中t_ref看起来像是接受referer来源,对访问数据包添加referer发现能够接受数据,尝试进行注入,我们使用到抓包工具进行抓包,修改Referer字段
referer:click me!" type="button" οnmοuseοver="alert(/xss/)

第12关

这一题和上一题一样的手法,只是字段改变了是在http请求头中的user-agent字段上。在网页代码当中发现UA头部信息,本关卡为UA头部注入恶意代码,将js代码插入到UA头部当中,使用burp或者hackbar工具进行

User Agent:click me!" type="button" οnmοuseοver="alert(/xss/)

第13关

通过观察源码发现,本题为http请求当中的cookie字段

这一题和上两题一样的手法相似,改变的是在http请求头中的Cookie字段上。

使用burp抓包或者hackbar工具进行修改cookie信息:

Cookie: user=click me!" type="button" οnmοuseοver="alert(/xss/)

第14关

这关报废了

第15关

查看页面源代码

观察源码发现短短的几行,实体转义了src的值

使用了ng-include这个表达式的意思是当HTML代码过于复杂时,可以将部分代码打包成独立文件,在使用ng-include来引用这个独立的HTML文件。

ng-include指令一般用于包含外部HTML文件,ng-include属性的值可以是一个表达式,返回一个文件名,但是默认情况下,包含的文件需要包含在同一域名下,也就是要调用同一域名下的其他网页。因为默认情况下,包含的文件需要包含在同一个域名下。很有可能这个指令就是突破口,我们看看源代码,果然有ng-include,并且对其输入做了过滤,所以我们可以包含一个有漏洞的页面

可构造以下payloa

src='level1.php?name=<a href="javascript:alert(1)">'

第16关

我们首先先把name变成keyword,这样内容就显示出来了

我们先试试写个a标签

<a href='javascript:alert(1)'>ahh

不对,查看页面源代码

我们可以看到我们的空格和script被过滤掉了,那我们用%0a代替空格,将script进行拆分

payload:
/level16.php?keyword=<a%0ahref='javas%0acript:alert(1)'>ahh

第17关

查看源代码,我们发现有两个参数

通过代码发现,本关卡有两个参数:arg01、arg02,当我们发送的时候,发现他们是会互相拼接起来的,那么我们就容易想到这里会不会就是突破口,发现这两个参数是在embed上,embed标签定义嵌入的内容,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码。embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容,但是呢相对于他们,embed标签打开不了文件的时候就会有块错误的区域。也可以绑定各种事件,比如尝试绑定一个onmouseover事件。

?arg01=a&arg02=' οnmοuseοver=alert("1")

第18关

与17关一模一样

第19关

第20关

这两关的参数都进行了html实体转换,查看资料得知需要使用flash插件绕过,flash现在太过落后了,没有人再用了,没必要再去了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值