Lesson-7
发现他把script直接就给过滤掉了,这时我们还有一个法宝就是双写绕过
我们接下来测试一下看看
写入成功,成功触发js代码
Lesson-8
我们先来打开f12简单分析一下
我们可以看到在输入框里输入的东西会被当成链接添加到下面那个友情链接的超链接上面,那么我们可不可以使用伪协议直接把js代码嵌入这个超链接上呢?我们现在就来试试吧
我们可以看到嵌入成功了,这说明思路是正确的,但是javascript被转义过滤掉了,这个时候我们要想办法绕过他
这个时候要比上面几关难一点,我这个时候想到了编码绕过的方式,你不让我用明文形式,我编码一下你就不认识我了,从而达到了绕过过滤的方法
我这里使用的是HTML编码的方式进行绕过的
打入成功,拿下第八关
Lesson-9
使用上一关的payload进行第一次测试
好的,插入成功
我们点击超链接试一下吧
那既然这个编码不行我们在换一种编码试一下
这样不行我们就自己写一个携带js代码的html,然后嵌入到值的地方
有窗口弹出,并没有得到自己所要的答案。这个窗口属于自己所编写网页的窗口,并不是题目所属网页窗口。
这时经过分析得知,会不会是必须要有http://才会不提示链接不合法呢?
我带着这个思路测试了一下,发现我的思路是对的
下面讲一下通关思路
发现这次不提示链接不合法了,但是伪协议也不会被执行了,这个时候我想到了既然必须要有http://又要让伪协议代码执行,那就只能先写上http://然后再给他注释掉这种方法来绕过过滤喽
好的,过关成功
Lesson-10
这次什么东西都不给了,我们先打开f12进行分析一波吧
我们发现input都变成了隐藏域,由于传参方式是GET方式,可以直接在url栏里面进行参数传递,那么这样的话我们可以把隐藏域中任何一个input的属性和值经过篡改直接发出去,从而达到xss攻击的目的
可是我们点击输入框并没有触发我们的js代码
我们继续f12进行分析
发现多出来了一个双引号,那么我们再加一个双引号,直接闭合掉那个单引号就可以了
完美闭合
点击输入框后触发js事件,所以我们打入xss成功,完美拿下第十关
Lesson-11
很显然没有打入点了,我们在url里面打入也失败了,这时我们可以利用抓包来进行打入
先来抓包分析一下
我们可以看到他是没有referer的,我们可以通过伪造referer的方法进行打入一些东西
我在这里示范的是打入一个带onclick弹窗的文本框的方式
放包查看页面变化
成功打入一个文本框
f12查看后发现这就是我们利用referer打入的带弹窗的文本框
我们点击后就直接触发js代码
Lesson-12
我们先来试一下11关的payload看看行不行
很显然行不通的
那么我们就要想一下了referer既然不行,我们是不是还有个UA的http头注入没用过呢,对吧
我们在这里可以先试一试,万一成功了呢
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" onclick=alert(1) type="text"
这是payload
我们可以看到文本框打入成功
我们点一下文本框即可触发js代码
完美打入
Lesson-13
由上面两道数据包的js代码注入题可知这道题应该还是数据包类型注入,我们想一下是不是还有cookie对吧
我们在这里就不一一测试了,直接看cookie那段,很明显有数据传输,我们想是不是可以利用cookie打入带js代码的文本框呢?
我们现在就来试试吧
发送数据包查看页面变化
页面出来了一个文本框,那么我们的payload里面嵌入了点击输入框触发js注入代码的代码,我们现在可以直接点击文本框从而让它触发我们所写好的条件
js代码打入成功
Lesson-14
这一关的图片一直加载不出来,所以也没有办法进行测试了。于是在网上找了一些参考,自己记录一下:
查看源码发现exif,猜测应该是exif xss,但是这个链接由于网络的原因无法访问,exif xss,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif元数据被修改为xss payload,成功利用弹窗,具体实现使用kali下的exiftool工具,命令如下:
exiftool -FIELD=XSS FILEexiftool -Artist=' "><img src=1 onerror=alert(document.domain)>' brute.jpeg
Lesson-15
查看代码,这一关是关于angular js的知识,ng-include有包含文件的意思,也就是相当于php里面的include,此处可以包含第一关的页面。
构造payload:
在url处写入语句,
src='level1.php?name=<img src=x onerror=alert(1)>'
如下图所示,这个没有利用成功,搜索到的另一个作者说是,因为这里需要访问angular.main.js这
个js文件,才能进行包含,虚拟机的环境中无法访问,看样子是需要fanqiang的,
Lesson-16
查看代码发现大小写绕过失效,script、/、,等都被转换成 ,这时,可以尝试使用%0a,%0d来进行绕过。
构造语句:
Keyword=<img%0dsrc=a%0donerror=alert(16)>Keyword=<iframe%0dsrc=0%0donmouseover=alert`16`></iframe>Keyword=<svg%0aonload=alert`16`></svg>
完美打入js代码
Lesson-17
打开源码发现了两个注入点构造payload
我们发现两个输出的值都被做了实体化转义,无法闭合标签,而 embed标签可以加入事件,可以在arg01,或者arg02中加入事件去触发
测试语句:
arg01=a&arg02=%20onmouseover=alert`1`
Lesson-19
Flash xss
页面源码,未插入语句时:
页面源码,插入语句后:
Payload:
网址或者ip地址
/xss/level19.php?arg01=version&arg02=<ahref="javascript:alert(document.domain)">xss_by_didi</a>
点击“xss_by_didi”就可以触发XSS。
解题思路:
flash xss,需要对flash的反编译对源码进行分析,这里使用jpexs-decompiler来分析,首先定位getURL函数
得知version参数可以传入loc4变量中,即sIFR的内容中,但是getURL只在内容为link时打开,所以分析contentIsLink函数
所以我们可以构造<a > </a> 标签来传值
Lesson-19
我们已经在不知不觉中来到了最后一关了
payload:level20.php?arg01=a&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height
成功弹窗
xss常用标签<script><img><input><details><svg><select><iframe><video><audio><body>这里只列举了一部分常用的