我注意到一些模糊JavaScript中的漏洞利用工具包模糊JavaScript在開發套件使用Array的構造
> a = []["constructor"]
Array() { [native code] }
> b = a["constructor"]
Function() { [native code] }
> b("console.log('a');")
anonymous() {
console.log('a');
}
> b("console.log('a');")()
a
,或者換句話說
> [].constructor.constructor("console.log('a');")()
a
有人能解釋這裏發生了什麼? Array的構造函數的構造函數是什麼?
您可以在任何JS控制檯中輸入'[] .constructor.constructor'並找出你自己。 –
如果您好奇,Function'的構造函數也是一個'Function',所以它是一個循環關係。這是[函數]的[MDN頁面](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) – 4castle
是的,這是JS控制檯的輸出。這裏的關鍵(我錯過了)是函數原型需要一個字符串文字並對它進行評估。 –