xss-labs靶场实战全通关详细过程(xss靶场详解)

目录

level 1

level 2

level 3

level 4

level 5

level 6

level 7

level 8

level 9

level 10 

level 11

level 12

level 13

level 14

level 15 

level 16

level 17

level 18

level 19

level 20


 啥都不懂的童鞋,可参考文章

xss概念理解:XSS跨站脚本攻击

xss常见标签:XSS常见触发标签

xss-labs下载地址https://github.com/do0dl3/xss-labs

level 1

查看网站源码,可以发现get传参name的值test插入了html里头,还回显了payload的长度

xss-labs靶场实战全通关详细过程(xss靶场详解)_第1张图片

直接上payload,插入一段js代码,get传参

url?name=

当然也能传其他的东西过掉第一关,建议参考XSS常见的触发标签 

xss-labs靶场实战全通关详细过程(xss靶场详解)_第2张图片

我们在看一下这关的源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第3张图片

没有啥过滤的,很普通,单纯插入即可

本关小结: JS弹窗函数alert()


level 2

查看网站源码 

xss-labs靶场实战全通关详细过程(xss靶场详解)_第4张图片

第一个test可以跟上次一样直接插入js即可,我们先试试看

没成功,看一下源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第5张图片

第一个test进行了html实体转义,但是第二个没有,我们只需要闭合掉双引号即可,构造payload

">    <"

xss-labs靶场实战全通关详细过程(xss靶场详解)_第6张图片

再看一下源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第7张图片

果然进行了html实体转化 

本关小结:闭合绕过 


level 3

先输入123456,然后查看网站源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第8张图片

相对于上一关,这里是单引号闭合,试一下看看

'>  <'

xss-labs靶场实战全通关详细过程(xss靶场详解)_第9张图片

没想到符号也被实体化了,我们看一下源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第10张图片果然被实体化了,但是htmlspecialchars函数只针对<>大于小于号进行html实体化,我们还可以利用其他方法进行xss注入,这里我们可以利用onfocus事件绕过

先简单介绍一下onfocus事件

xss-labs靶场实战全通关详细过程(xss靶场详解)_第11张图片

onfocus事件在元素获得焦点时触发,最常与 为例,标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码

所以我们可以利用这个事件来绕过<>号的过滤已达到执行js的目的,构造payload

' onfocus=javascript:alert() '

xss-labs靶场实战全通关详细过程(xss靶场详解)_第12张图片

然后再点击输入框触发onfocus事件即可

xss-labs靶场实战全通关详细过程(xss靶场详解)_第13张图片

本关小结 :onfocus可以绕过html实体化(即<>号的过滤)


level 4

查看一下网站源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第14张图片

这里是双引号闭合,标签,所以我们还能继续利用onfocus事件,构建payload

" onfocus=javascript:alert() "

xss-labs靶场实战全通关详细过程(xss靶场详解)_第15张图片

看一下这关的源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第16张图片这里只是把<>号给删掉了,没多做过滤

本关小结:无 


level 5

xss-labs靶场实战全通关详细过程(xss靶场详解)_第17张图片

这关感觉常规的方法过不去,我们先试试看

" onfocus=javascript:alert() "

xss-labs靶场实战全通关详细过程(xss靶场详解)_第18张图片

果然,这里on被替换成了o_n,先看一下这关的源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第19张图片

过滤了js的标签还有onfocus事件,虽然str_replace不区分大小写,但是有小写字母转化函数,所以就不能用大小写法来绕过过滤了,只能新找一个方法进行xss注入,这里我们用a href标签法

xss-labs靶场实战全通关详细过程(xss靶场详解)_第20张图片

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

添加一个标签得闭合前面的标签,构建payload

"> xxx <"

xss-labs靶场实战全通关详细过程(xss靶场详解)_第21张图片

之后点击xxx,触发a标签href属性即可

xss-labs靶场实战全通关详细过程(xss靶场详解)_第22张图片

本关小结:可以插入标签(如标签的href属性)达到js执行的效果,前提是闭合号<"">没失效


level 6

xss-labs靶场实战全通关详细过程(xss靶场详解)_第23张图片

这感觉很悬,不知道过滤了啥,输入关键字测试看看

onfocus  <"
" Onfocus=javascript:alert() "
"> x <"

完事查看一下这关的源码

xss-labs靶场实战全通关详细过程(xss靶场详解)_第26张图片

这关甚至还过滤掉了data,但是没有添加小写转化函数 ,导致能用大写绕过 

本关小结:大小写法绕过str_replace()函数 


level 7

老规矩了,先上关键字试试看

" OnFocus 

">