创建易受XSS攻击的网页

Creation of XSS vulnerable web page

本文关键字:网页 攻击 XSS 易受 创建      更新时间:2023-09-26

我想创建一个易受攻击的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>在输入字段脚本执行。
我想知道它和我正在做的事情的主要区别是什么?

如果你使用innerHTML注入一个脚本标签…脚本无法运行!

你可以用onload事件处理器注入一个图像:

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

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

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

只是eval的代码:

function changeThis(){
    var formInput = document.getElementById('theInput').value;
    eval(formInput);
}