0x00 前言
临时更一篇,这篇文章本不在更新计划中,直到上周有师傅留言:
其实我那篇文章中有简单提到过:
但是我没细讲,给出的payload也只是弹窗和打印,没有什么太大危害:
所以如果大家想要危害比较大的,比如获取cookie,那么请看下文。
0x01 正文
在模板字面量中,使用如下的格式包裹变量:
let expression = 'test';
`string ${expression} string;`
也就是形如${}
的形式,在大括号中包裹变量,这样就能将变量插入到字符串中。
下面这段payload就是我上文给留言区师傅的那个:
console.log`${document.cookie}`
效果:
至于为什么会有一个多余的数组,读者朋友如有兴趣可自查MDN文档,这不是本文重点所以掠过(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals
):
这也是为什么alert弹不出内容的原因:
alert`${document.cookie}`
所以我这里只建议使用console.log
打印cookie,另外包括变量用到的$
和{}
也同样不会被转义,这里我依然用上文用到的php经典函数htmlspecialchars
给大家演示:
至于更多的payload就需要大家自行构造了,我这里就不多余写了。
原文始发于微信公众号(Spade sec):探索挖掘xss中括号被转义的绕过措施(续)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论