有一个javascript文件,可以在throw new Error("error string")行之后注入代码。但是,在抛出语句之后,似乎无法执行任何代码。
throw new Error("error string");
<my xss code here>如果语句末尾没有分号,我认为可以通过这样的条件(三元)运算符运行代码:
throw new Error("error string")
? 1==0: code有什么方法可以在抛出语句之后运行代码吗?也许是一种无证的方式?
发布于 2023-03-19 15:56:45
语言中有许多意想不到的角落可以改变控制流。为了安全起见,在JavaScript的未来版本中可能会添加新的代码,我总是假设允许在任何地方注入代码是一个潜在的漏洞。
对于您的特定示例,通过本地悬挂的定义更改错误构造函数就足够了。下面的代码将输出“XSS”到控制台。
throw new Error("error string");
function Error() { console.log('XSS'); }发布于 2023-03-17 22:21:04
如果您真的是在javascript文件中注入,那么我就找不到继续执行的方法。如果要在html文档中插入脚本标记,则可以关闭脚本标记并打开一个新的脚本标记,它将独立执行。
https://security.stackexchange.com/questions/269185
复制相似问题