读书笔记:XSS构造剖析

绕过xss过滤

0x01 用户不能构造自己的html标记

绕过思路:利用现有html标签属性值(低版本的浏览器如ie6可能有此漏洞)
举例:

1
2
<table background='javascript:alert(/xss/)'></table>
<img src="javascript:alert(/xss/);">

说明:不是所有标记的属性值都能产生xss,通常只有引用文件的属性才能触发,如:href lowsrc bgsound background value action dynsrc
(经过测试,相当一部分的属性值无法在高版本的浏览中实现攻击,因为浏览器会将js代码当做url访问而不会认为是js。可以用的有herf,但是需要点击,无法自动触发)

1
<a href="javascript:alert(/xss/)">touch me!</a>

0x02 敏感字过滤

绕过思路1:ascii编码

1
<img src=1 onerror=&#0000097lert(/xss/)>

说明:格式:&#+(可以补0)+ascii编码

还可以把&#01、&02等字符插入到javascript或Vbscript的头部,tab符&#9、换行符&#10、回车符&#13可以插入到代码中任意地方(未复现成功)

注意这是因为浏览器对html对ascii的支持所致,在\