Javascript escape.alf.nu对问题17、18和21的回答

Javascript escape.alf.nu对问题17、18和21的回答,javascript,xss,Javascript,Xss,我最近发现了这个网站。这对我来说真的很难,在解决或至少知道所有挑战的解决方案之前,我不能离开它。有些答案真的让我大吃一惊。但我仍然无法解决17、18和21题,在互联网上也找不到任何答案 17和18让我读了很多关于SOP旁路的书。大多数旁路(通过帧名称、地址散列、最近的postMessage())都需要两边的js代码。众所周知,您可以将任何内容加载为javascript或css,并可能从中获取一些信息,但它需要特定的输入格式(即使javascript错误消息在现代浏览器中也会被阻止)。即使在tok

我最近发现了这个网站。这对我来说真的很难,在解决或至少知道所有挑战的解决方案之前,我不能离开它。有些答案真的让我大吃一惊。但我仍然无法解决17、18和21题,在互联网上也找不到任何答案

17和18让我读了很多关于SOP旁路的书。大多数旁路(通过帧名称、地址散列、最近的postMessage())都需要两边的js代码。众所周知,您可以将任何内容加载为javascript或css,并可能从中获取一些信息,但它需要特定的输入格式(即使javascript错误消息在现代浏览器中也会被阻止)。即使在token17.alf.nu(或18)iframe上无法设置document.domain,也无法设置document.domain

在我看来,这是对SOP的公然违反,只有浏览器漏洞(比如android默认浏览器上的漏洞)才能绕过SOP。但拥有一个需要特定浏览器的浏览器与其他挑战的风格背道而驰。在第18章中,他说“我希望这一个不会在所有浏览器中都能工作”,但听起来他似乎希望它在大多数浏览器中都能工作(所以很可能不是漏洞),更重要的是,这与之前的版本相矛盾,显然在所有浏览器中都能工作

还有21个。20比其他晚些时候的水平得到了更多的关注,因为阿尔夫从他的答案到联系到了这一点,以此证明他的简短回答是“不够的”。人们对该级别给出的答案是定义一个名为“window”或“console”的函数——该定义在with语句之前被提升到作用域的顶部,因此console.foo永远不会被检查。但是,这只起作用,因为它在函数范围内运行。如果我们真的试图绕过对控制台的阻塞(现在只是理论上的,因为不再有一种已知的阻塞方式),我们就无法定义一个新的窗口或控制台,因为我们正在全局范围内运行,并且我们无法重新定义这些名称

21是基于萨尔曼A对这个问题的回答。这似乎是为了表明facebook实际使用的代码比Alf的示例更好,但真正重要的是,该级别使用settimeout运行代码,确保它在全局范围内运行,并且您不能覆盖窗口或控制台。我开始认为这个级别没有解决方案。。。有人发现什么吗