Javascript 使用有意的HTML注入创建HTML

Javascript 使用有意的HTML注入创建HTML,javascript,html,xss,code-injection,Javascript,Html,Xss,Code Injection,我是一名网络安全专业的学生,试图理解一些基本的HTML注入。我已经在这段代码上工作了几天,不明白我做错了什么。我当前拥有的代码确实允许注入,例如,如果我将test放入文本框,它会将test显示为标题。但是如果我尝试alert(1)它实际上不会运行脚本。我尝试将文本框的值设置为“”,或者考虑到可以通过在文本框中输入以下内容来结束该行:>alert(1) 我还尝试通过在末尾添加注释来取消代码的其余部分,如下所示:alert(1)要从表单中执行javascript,您可以尝试: <iframe

我是一名网络安全专业的学生,试图理解一些基本的HTML注入。我已经在这段代码上工作了几天,不明白我做错了什么。我当前拥有的代码确实允许注入,例如,如果我将
test
放入文本框,它会将test显示为标题。但是如果我尝试
alert(1)
它实际上不会运行脚本。我尝试将文本框的值设置为“”,或者考虑到可以通过在文本框中输入以下内容来结束该行:
>alert(1)


我还尝试通过在末尾添加注释来取消代码的其余部分,如下所示:
alert(1)要从表单中执行javascript,您可以尝试:

<iframe src=javascript:alert(1)>


还值得注意的是:

使用
innerHTML
插入的
script
元素在 插入

这是因为
在页面加载时运行,并且当
标签的内容更改时,脚本已经运行

但是,如果您将
标记插入到不同的页面(通过后端(XSS表示跨站点脚本)),它确实可以工作

或者,要使其在页面加载后注入内容的场景中工作(如您的案例),您可以使用JS事件(如
onclick
)运行代码:

点击我!
或者,要在没有用户交互的情况下执行它,可以使用
onload
事件:


要手动执行JavaScript,可以执行以下操作

在不编辑HTML文件的情况下,将其添加到浏览器的输入字段中

<iframe onload="alert(1)" style="display:none"></iframe>

更多有关

有关如何执行此类操作的更多信息,请参见此处:


函数getwords(){
textbox=document.getElementById('words');
label=document.getElementById('label');
label.innerHTML=textbox.value;
}

可能重复的,你能为最后一句话添加一个源代码吗?谢谢你的回复,这肯定有帮助。不过我还有一个问题,是否有任何方法可以指定javascript运行的源代码?我使用的当前csp限制src为self和*.google.com-like-script
src
?基本上没有;但是如果支持CORS,您可以尝试AJAX请求,然后返回xss部分,如果在我的代码中添加了一个弹出窗口,可能会设置该文本框的输入,那么脚本将在点击按钮加载新页面后运行?@xswarms'如果在我的代码中添加了一个弹出窗口来弹出该文本框ybe设置文本框的输入,脚本将在点击按钮加载新页面后运行?'-对不起,我不明白你问什么…本质上,我希望在我输入警报(1)时它实际运行。关于你说的“如果你(通过后端)向不同页面注入标签”(XSS表示跨站点脚本),它确实有效。“我想知道我是否设置了打开新窗口的按钮,并在该窗口中让它打印文本框值,如果插入脚本,它将实际运行脚本。
<img src=x onerror=alert(1)>
<iframe onload="alert(1)" style="display:none"></iframe>