【问题标题】:Is there anyway to trigger javascript in eventhandler with text input反正有没有用文本输入触发事件处理程序中的javascript
【发布时间】:2018-02-25 17:15:25
【问题描述】:

最近一直在研究XSS,发现了一个案例,html代码是这样的

<input type="text" name="s" id="s" value="foo" onblur="this.value"  x-webkit-speech/>

所以我想知道是否可以输入alert(1) 之类的内容以使 onblur 处理程序触发 javascript..有可能吗?

【问题讨论】:

  • 输入那个在哪里?
  • 你看到我在问题中输入的 html 代码了吗?
  • 是的。你怎么能在那里注入一些东西?你可以操纵哪个部分,到什么程度?
  • 对不起,我只是为了简单起见改变了代码,基本上我的意思是你能不能在窗口中输入像 alert() 这样的 javascript 来触发 onblur 事件。
  • 不,onblur="this.value" 毫无意义,但不是您可以利用的弱点。当它运行时,它只是将属性评估为字符串并将其丢弃。另外,你无论如何都不能注入输入值,所以你只能攻击自己(which is much easier

标签: javascript html xss


【解决方案1】:

是的。在 javascript 中,“this”指的是当前元素。由于输入 onblur 事件引用了元素的值,因此输入将运行您放入其中的任何内容。但是,除非这可以通过 url 反映出来,否则这将毫无用处。

【讨论】:

  • 你提交的一个老问题的答案把它撞了起来,让我也意外地回答了它。哈哈,好吧..
【解决方案2】:

所以我想知道是否可以输入类似 alert(1) 的内容来制作 onblur 处理程序触发javascript..可能吗?

不,这是不可能的,您需要评估您在输入框中输入的代码才能执行它,因为它被视为字符串而不是代码。

你需要做以下你永远不需要或不想做的事情。

&lt;input type="text" name="s" id="s" value="alert('foo')" onblur="eval(this.value)" x-webkit-speech autofocus/&gt;

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多