7

我想创建一个 XSS 易受攻击的网页,该网页执行在输入框中输入的脚本。在这里,我编写了这段代码,但是每当我输入脚本时,什么都没有发生。

<html>

<head>
</head>

<body>
<script type="text/javascript">
function changeThis(){
    var formInput = document.getElementById('theInput').value;
    document.getElementById('newText').innerHTML = formInput;
    localStorage.setItem("name","Hello world!!!");
}
</script>

<p>You wrote: <span id='newText'></span> </p> 

<input type='text' id='theInput' value='Write here' />
<input type='button' onclick='changeThis()' value='See what you wrote'/>
</body>

</html>

请帮忙。我应该如何修改代码?
更新:我试图做反射型 XSS。据我说,如果我在输入中输入脚本它应该执行。仅当我不检查用户是否输入了有效输入并采取措施不执行脚本时才会发生这种情况。
这是一个网页www.insecurelabs.org/task/Rule1,当我输入以下脚本时,该网页易受 XSS 攻击:<script> alert("hell"); </script>在输入字段中执行脚本。
我想知道这与我在做什么之间的主要区别是什么?

4

2 回答 2

3

如果您使用innerHTML 注入脚本标签...脚本将无法运行!

您可以做的是注入带有 onload 事件处理程序的图像:

<img src="someImage.gif" onload="alert('hacked!')" />

[更新]关于您的最后一个问题:主要区别在于您使用的是 innerHTML,而 insecurelabs 页面使用的是 jQuery.html()。jQuery 方法将运行脚本。

现场演示:http: //jsfiddle.net/wqqWt/

于 2013-04-05T19:35:10.390 回答
-2

只是eval代码:

function changeThis(){
    var formInput = document.getElementById('theInput').value;
    eval(formInput);
}
于 2013-04-05T19:37:41.590 回答