我正在为我的一个朋友创建一个易受XSS攻击的网站,这样他就可以搞砸了。但是,我过去几天一直试图创建一个,但它还没有工作。我现在要简化的是:
<input type="text" id="YourText">
<button onclick="myFunction()">Button</button>
JavaScript的:
function myFunction() {
var btn = document.createElement("button");
btn.appendChild(document.createTextNode(document.getElementById("YourText").value);
document.body.appendChild(btn);
}
所以它应该做的是如果按下名为button的按钮,它会创建一个按钮,其中包含您在文本框中键入的文本,其中包含您的创建ID。但是,当我运行它时,没有任何反应。我不明白为什么。我使用了段落标签,甚至是脚本标签,但没有使用。但是,如果我这样做它只会创建元素但不会从用户那里获取输入,如下所示:
function myFunction() {
var btn = document.createElement("button");
btn.appendChild(document.createTextNode("Hi"));
document.body.appendChild(btn);
}
它运作得很好。我尝试删除.value但它仍然无法正常工作。我无法理解我做错了什么,请帮助。
它的源代码在这里:https://github.com/ninja25538/SuperCoolImageSiteThat-sNotAtAllVulnerable/blob/master/index.html
答案 0 :(得分:0)
试
<script>
function myFunction() {
var val = document.getElementById("YourText").value;
var x = "<input type=submit value="+val+"></input>";
document.getElementById("someDiv").innerHTML += x;
}
</script>
答案 1 :(得分:-1)
而不是
btn.appendChild(document.createTextNode(document.getElementById("YourText").value);
尝试
btn.appendChild(document.createTextNode(document.getElementById("YourText").innerHTML);