确定,..
这显然是给您的一个技巧性问题。
[大多数人忘记的是,当您看到类似-if (x == true)
等内容时,x
可以表示2个东西,一个变量x,但也可以表示一个全局x,在浏览器中是窗口。
现在window
是一个对象,因此这意味着我们可以像其他任何对象一样附加属性获取器。
因此,下面的示例基本上在窗口上创建一个属性x,该属性在每次调用时都会更改,并允许我们获取秘密:)
var a = [true, false, 42, 'x', 'y']; //our values
Object.defineProperty(
window, 'x',
{get: () => a.shift()});
//now lets test.. do we get the secret flag?
if ((x==true)&&(x==false)&(x==42)&&(x!=x)) {
console.log("[secret_flag]");
} else {
console.log("Nope");
}