我一直在尝试在我正在进行的一些XSS研究中使用此代码。我希望在易受攻击的页面上使用我选择的文本生成iframe。如果我使用下面的代码并将其放在html标签中并浏览到它,那么iframe就会按照预期的文本创建。但是,如果我尝试将代码注入我的测试表面(该死的易受攻击的Web应用程序),则会生成iframe窗口,但不会生成任何文本。任何人都可以告诉我这里发生了什么,是否有办法解决它?
<script type="text/javascript">
function populateIframe() {
var ifrm = document.getElementById('myIframe');
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write("hello world!");
ifrm.document.close();
}
</script>
<body onload="populateIframe();">
<iframe id="myIframe"></iframe>
谢谢!
答案 0 :(得分:2)
尝试关闭<script>
代码。
如果这没有帮助,可能没有populateIframe()
被调用。
在不完全了解您的情况的情况下,我冒昧地认为易受攻击的页面已经有一个<body>
元素干扰了您想要加载的第二个元素。不确定当有2个body
标签时会发生什么。如果是这种情况,您可以删除额外的body
代码并将iframe
替换为:
<iframe id="myIframe" onload="populateIframe();"></iframe>
然后,当iframe
完成添加到DOM时,将调用您的JS。