【投稿】探索挖掘xss中括号被转义的绕过措施(续)

【投稿】探索挖掘xss中括号被转义的绕过措施(续)

0x00 前言

临时更一篇,这篇文章本不在更新计划中,直到上周有师傅留言:

d2b5ca33bd20250310231656

其实我那篇文章中有简单提到过:

d2b5ca33bd20250310231703

但是我没细讲,给出的payload也只是弹窗和打印,没有什么太大危害:

d2b5ca33bd20250310231711

所以如果大家想要危害比较大的,比如获取cookie,那么请看下文。

0x01 正文

在模板字面量中,使用如下的格式包裹变量:

let expression = 'test';
`string ${expression} string;`

d2b5ca33bd20250310231728

也就是形如${}的形式,在大括号中包裹变量,这样就能将变量插入到字符串中。

下面这段payload就是我上文给留言区师傅的那个:

console.log`${document.cookie}`

效果:

d2b5ca33bd20250310231734

d2b5ca33bd20250310231741

至于为什么会有一个多余的数组,读者朋友如有兴趣可自查MDN文档,这不是本文重点所以掠过(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals):

d2b5ca33bd20250310231749

这也是为什么alert弹不出内容的原因:

alert`${document.cookie}`

d2b5ca33bd20250310231756

所以我这里只建议使用console.log打印cookie,另外包括变量用到的${}也同样不会被转义,这里我依然用上文用到的php经典函数htmlspecialchars给大家演示:

d2b5ca33bd20250310231802

d2b5ca33bd20250310231808

至于更多的payload就需要大家自行构造了,我这里就不多余写了。

© 版权声明
THE END
喜欢就支持一下吧
点赞36赞赏 分享
评论 共2条

请登录后发表评论

    请登录后查看评论内容