xss.haozi.me

0x03 审查源码我们发现,括号, 方括号都被过滤了

这段代码是一个简单的 JavaScript 函数,名为 `render`。它接受一个字符串 `input` 作为参数,并返回一个新的字符串,其中所有圆括号 `(` 和 `)` 都被移除了。

函数内部定义了一个正则表达式 `stripBracketsRe`,它匹配所有的圆括号字符。然后使用 `String.prototype.replace` 方法和这个正则表达式来替换字符串中的所有圆括号为空字符串(即删除它们)。最后,函数返回处理后的字符串。

例如,如果你调用 `render("Hello (world)!")`,它将返回 `Hello world!`。

0x06

函数的工作流程如下:

  1. 使用 String.prototype.replace 方法和正则表达式 /auto|on.*=|>/ig 来替换 input 字符串中的特定内容。这个正则表达式匹配以下内容:

    • auto:字面意义上的 "auto" 字符串。
    • on.*=:以 "on" 开头,后面跟着任何字符(. 表示任何字符,* 表示前面的字符可以出现零次或多次),直到遇到等号 "=" 的字符串。
    • >:字面意义上的大于号 ">"。

    i 修饰符表示不区分大小写,g 修饰符表示全局匹配,即匹配字符串中的所有可能实例。

  2. 所有匹配到的字符串都会被替换为下划线 _。

  3. 函数返回一个新的字符串,该字符串是一个 <input> 元素,其 value 属性被设置为 1,并且 input 字符串被插入到 <input> 元素的属性中。

分析regex表达式:

/auto|on.*=|>/ig

它匹配了: auto 、以on开头且以=结尾的字符串、 >

所以过滤了autofocus和onerror等事件, 以及防止input标签被闭合

但是它并没有匹配换行符, 可以通过换行来绕过匹配

type="image" src="" onerror

=alert(1)

0x07

这题也是正则表达式, 将匹配到的替换为空:

分析正则表达式:

/<\/?\^\>+>/gi

这里分为三部分来分析: /<\/?\^\>+>/gi

<\/?

\转义符与/结合, 从而转义了/, 进而含义是匹配: </

再加上+ (匹配前面的子表达式一次或多次), 所以是匹配: < 或者 </

\^\>+

首先要明白, 中括号的用法: abc => 匹配abc中的任意一个;

然后^符号的两种用法:

  1. 限定开头: 比如, /^A/会匹配"An e"中的A,但是不会匹配"ab A"中的A

  2. 取反(仅处于中括号中成立): 比如,\^a-zA-Z0-9表示 "找到一个非字母也非数字的字符"。

最后是+的含义:匹配前面的子表达式一次或多次。

所以,总的来说,\^\>+ 匹配了除了^的任意字符的一次或者多次

>

单纯匹配>。

总的表达式就是,匹配: </ 任意字符 >, 而且 /i 过滤了大小写

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

函数的工作流程如下:

  1. 定义了一个名为 stripTagsRe 的正则表达式,用于匹配 HTML 标签。这个正则表达式可以匹配:

    • 开始标签 < 后面跟着任意不是 > 的字符,直到 > 的序列。
    • 结束标签 </ 后面跟着任意不是 > 的字符,直到 > 的序列。

    < 和 > 是 HTML 标签的定界符,而 gi 修饰符中的 g 表示全局匹配(即匹配整个输入字符串中的所有标签),i 表示不区分大小写。

  2. 使用 String.prototype.replace 方法和 stripTagsRe 正则表达式来替换 input 字符串中的所有 HTML 标签为空字符串(即删除它们)。

  3. 函数返回一个新的字符串,该字符串是一个 <article> 元素,其内容是处理后的 input 字符串。

相关推荐
星栈7 分钟前
视频即代码,Remotion 能做什么、不能做什么
前端·音视频开发
广州华水科技10 分钟前
单北斗GNSS位移监测系统的应用与技术解析
前端
用户479492835691530 分钟前
从一句话或代码仓到可交互 HTML:开源 Agent 画图技能 Archify v3.2 实测与选型边界
前端·后端·面试
风骏时光牛马3 小时前
生成一个AI多模态标题,仅输出一条标题,无额外文字、问句、备选、配图、文案等任何附加内容,不需要其他的任务服务 只要标题。
前端
wangruofeng3 小时前
从 GIF 到 AVIF:网页图片格式演进与 2026 年选型指南
前端·架构
清晨Coding4 小时前
为什么用 React Developer Tools 查看组件树这么乱?
前端·react.js
鶴哥只手遮天5 小时前
《Electron 45.2.3 内核解剖》第 4 章 补丁体系:380 个补丁改了什么
前端·electron
FungLeo7 小时前
成为全栈·Vue 管理后台篇·分类树与标签管理:层级数据如何落到管理界面
前端·javascript·vue.js·分类树·naive ui·标签管理·前端数据结构
Lank_M10 小时前
白底都占八成,PNG 为何只在图表页赢过 JPG
前端
张一凡9310 小时前
给 Coding Agent 加一道"架构闸门":Jin 是如何做到"先审架构、再写代码、不漂移"的
前端·后端·agent