通过故意 HTML 注入创建 HTML
Creating HTML with intentional HTML Injection
我是一名网络安全专业的学生,正在尝试了解一些基本的 HTML 注入。我已经在这段代码上工作了几天,无法理解我做错了什么。我目前拥有的代码确实允许注入,例如,如果我将 <h1>test</h1>
放入文本框,它将显示测试为 header。但是如果我尝试 <script>alert(1)</script>
它实际上不会 运行 脚本。我尝试将文本框的值设置为“”,或者认为我可以通过在文本框中输入以下内容来关闭该行:"><script>alert(1)</script>
我还尝试通过在末尾添加注释来取消代码的其余部分,如下所示:<script>alert(1)</script><!--
我已经尝试了多种组合,但都没有成功。现在我实际上需要能够注入脚本,因为我正在使用 CSP 以及它如何影响将脚本注入网页。我目前没有指定 csp 来限制来自 运行ning 的 JavaScript。我尝试过的其他一些事情包括使用不同的浏览器、更改浏览器安全性以及确保在浏览器中启用 JavaScript。任何帮助将不胜感激!!
<html>
<script language='JavaScript'>
function getwords(){
textbox = document.getElementById('words');
label = document.getElementById('label');
label.innerHTML = textbox.value;
}
</script>
<body>
<input type="text" id="words">
<input type="button" onclick="getwords()" id="Button" value="Enter" />
<label id="label">
</label>
</body>
</html>
要从您的表单执行 javascript,您可以尝试:
<iframe src=javascript:alert(1)>
或
<img src=x onerror=alert(1)>
另外值得注意的是:
script
elements inserted using innerHTML
do not execute when they
are inserted.
那是因为 <script>
s 运行 在页面加载时,当 label
的内容改变时,脚本已经 运行。
但是,如果您将 <script>
标签 注入到不同的页面(通过后端(XSS 意味着 跨站点脚本)),它确实有效。
或者,要使其在页面加载后注入内容(如您的情况)的情况下工作,您可以使用 JS 事件(如 onclick
) 运行 您的代码:
<div onclick="alert(1)">Click me!</div>
或者,要在没有用户交互的情况下执行它,您可以使用 <iframe>
的 onload
事件:
<iframe onload="alert(1)" style="display:none"></iframe>
要手动执行JavaScript,您可以执行以下操作
在不编辑 HTML 文件的情况下,将其添加到浏览器的输入字段中。
<iframe onload="alert(1)" style="display:none"></iframe>
的更多信息
在此处详细了解如何执行此类操作:developer.mozilla.org
<html>
<script language='JavaScript'>
function getwords(){
textbox = document.getElementById('words');
label = document.getElementById('label');
label.innerHTML = textbox.value;
}
</script>
<body>
<input type="text" id="words">
<input type="button" onclick="getwords()" id="Button" value="Enter" />
<label id="label">
</label>
</body>
</html>
我是一名网络安全专业的学生,正在尝试了解一些基本的 HTML 注入。我已经在这段代码上工作了几天,无法理解我做错了什么。我目前拥有的代码确实允许注入,例如,如果我将 <h1>test</h1>
放入文本框,它将显示测试为 header。但是如果我尝试 <script>alert(1)</script>
它实际上不会 运行 脚本。我尝试将文本框的值设置为“”,或者认为我可以通过在文本框中输入以下内容来关闭该行:"><script>alert(1)</script>
我还尝试通过在末尾添加注释来取消代码的其余部分,如下所示:<script>alert(1)</script><!--
我已经尝试了多种组合,但都没有成功。现在我实际上需要能够注入脚本,因为我正在使用 CSP 以及它如何影响将脚本注入网页。我目前没有指定 csp 来限制来自 运行ning 的 JavaScript。我尝试过的其他一些事情包括使用不同的浏览器、更改浏览器安全性以及确保在浏览器中启用 JavaScript。任何帮助将不胜感激!!
<html>
<script language='JavaScript'>
function getwords(){
textbox = document.getElementById('words');
label = document.getElementById('label');
label.innerHTML = textbox.value;
}
</script>
<body>
<input type="text" id="words">
<input type="button" onclick="getwords()" id="Button" value="Enter" />
<label id="label">
</label>
</body>
</html>
要从您的表单执行 javascript,您可以尝试:
<iframe src=javascript:alert(1)>
或
<img src=x onerror=alert(1)>
另外值得注意的是:
script
elements inserted usinginnerHTML
do not execute when they are inserted.
那是因为 <script>
s 运行 在页面加载时,当 label
的内容改变时,脚本已经 运行。
但是,如果您将 <script>
标签 注入到不同的页面(通过后端(XSS 意味着 跨站点脚本)),它确实有效。
或者,要使其在页面加载后注入内容(如您的情况)的情况下工作,您可以使用 JS 事件(如 onclick
) 运行 您的代码:
<div onclick="alert(1)">Click me!</div>
或者,要在没有用户交互的情况下执行它,您可以使用 <iframe>
的 onload
事件:
<iframe onload="alert(1)" style="display:none"></iframe>
要手动执行JavaScript,您可以执行以下操作
在不编辑 HTML 文件的情况下,将其添加到浏览器的输入字段中。
<iframe onload="alert(1)" style="display:none"></iframe>
的更多信息
在此处详细了解如何执行此类操作:developer.mozilla.org
<html>
<script language='JavaScript'>
function getwords(){
textbox = document.getElementById('words');
label = document.getElementById('label');
label.innerHTML = textbox.value;
}
</script>
<body>
<input type="text" id="words">
<input type="button" onclick="getwords()" id="Button" value="Enter" />
<label id="label">
</label>
</body>
</html>