前言
不管是CTF刷题、漏洞挖掘、渗透测试,还是Web安全面试,
XSS注入特殊字符都是必考核心知识点。
很多新手只会写基础
<script>alert(1)</script>,一旦网站开启过滤、拦截尖括号、引号、空格,就完全无从下手。
其实XSS攻击的本质,就是
利用特殊字符打破页面原有结构、闭合标签、逃逸过滤规则、执行恶意JS代码。所有XSS绕过、高阶Payload,全部基于基础特殊字符变形、编码、替换实现。
本文整理全网最全
XSS核心特殊字符清单+作用解析+绕过思路+实战案例+防护方案,关键词密集适配百度收录,零基础可直接收藏复用,通杀90%基础、进阶XSS题型。
一、XSS注入5大核心基础特殊字符(必记)
这5个字符是所有XSS攻击的基石,任何Web前端解析、JS执行、标签闭合都离不开,也是WAF与后端过滤的重点拦截对象。
1、< 左尖括号(标签起始符)
核心作用:开启HTML标签,是XSS注入的入口,没有尖括号无法创建
script、svg、img 等恶意标签。
场景:
<script>、
<svg onload= 所有注入Payload必备开头字符。
2、> 右尖括号(标签结束符)
核心作用:闭合当前HTML标签,跳出原有页面标签结构,让恶意代码独立执行。
场景:截断原有标签,防止恶意代码被页面原生内容吞噬失效。
3、' 单引号 / " 双引号(属性闭合符)
核心作用:XSS最高频突破口!用于
闭合HTML属性、JS变量引号,打破原有赋值规则,注入自定义事件与代码。
经典场景:页面输出在
value="用户输入" 中,插入
" 直接闭合属性,新增
onclick、onload 执行事件。
4、( ) 小括号(函数执行符)
核心作用:JS函数调用必备符号,
alert()、confirm()、eval() 全部依赖括号执行代码。
5、; 分号(语句截断符)
核心作用:截断原有JS语句,结束正常代码,拼接自定义恶意代码,实现多句JS执行。
二、XSS进阶特殊字符(过滤绕过专用)
当网站过滤了上述基础符号后,利用以下特殊字符、空白符、替代符号可完美绕过基础WAF与前端过滤,是高阶XSS的核心关键。
1、空白绕过字符(替代空格)
多数网站仅拦截空格 ,忽略ASCII空白控制字符,可直接替代空格分割标签与参数。
- %09:水平制表符(Tab)
- %0A:换行符
- %0D:回车符
- %0C:换页符
绕过示例:
<svg%09onload=alert(1)>
2、反引号 ` (无括号执行)
过滤
() 括号时,可使用反引号替代函数执行,无需括号即可弹窗执行代码。
绕过Payload:
alert`xss`
3、// 、/* */ 注释符(截断过滤)
作用:注释掉页面剩余原生代码,避免语法报错,保证恶意代码正常执行。
常用于JS行内注入、变量截断场景。
4、%00 空字符(截断绕过)
部分老旧后端、C语言内核程序,遇到
%00 会强制截断字符串,可用于截断过滤规则、绕过后缀检测、标签匹配。
示例:
<scr%00ipt> 绕过关键词完整匹配过滤
5、& HTML实体符号(编码绕过核心)
利用 & 开头的HTML实体编码,将敏感特殊字符编码变形,浏览器解码后正常执行,绕过明文拦截。
经典编码:<对应<、>对应>,是最通用的XSS编码绕过方式。
三、高频特殊字符绕过实战案例(直接复刻)
结合上面特殊字符,整理3个最常用、通过率最高的XSS绕过Payload,适配多数基础过滤场景。
案例1:过滤空格,用Tab空白符绕过
拦截普通空格,不拦截%09制表符
Payload:
<img%09src=x%09onerror=alert(1)>
案例2:过滤括号(),用反引号绕过
拦截函数括号,禁止常规弹窗
Payload:
<svg onload=alert`1`>
案例3:过滤script标签,用空字符变形绕过
拦截完整script关键词,利用%00截断匹配
Payload:
<scr%00ipt>alert(1)</scr%00ipt>
案例4:引号被拦截,无引号原生执行
单双引号全部过滤,无需引号直接绑定事件
Payload:
<svg onload=alert(1)>
四、冷门高阶特殊字符绕过(进阶刷题必备)
- JSFuck六字符绕过:仅使用
[]()!+ 六个特殊字符编写完整恶意JS代码,无任何字母数字,专治字母关键词黑名单过滤
- Unicode编码绕过:将特殊字符与关键字Unicode转义,规避明文匹配
- UTF-7编码绕过:老旧浏览器兼容,利用特殊编码格式变形标签字符
- 换行拼接绕过:利用%0A换行拆分关键词,打散完整标签规避检测
五、XSS特殊字符过滤误区(新手必踩坑)
误区1:只过滤 < > 就可以防XSS
纠正:仅拦截尖括号无效,svg、img事件注入无需完整script标签,依靠引号、空白符即可触发XSS。
误区2:过滤空格就安全
纠正:%09、%0A、%0D等空白替代字符完全可以替代空格,轻松绕过。
误区3:拦截括号即可阻止弹窗
纠正:反引号、模板字符串可无括号执行JS函数,绕过括号拦截。
误区4:单纯前端过滤特殊字符
纠正:前端过滤可被开发者工具篡改,所有XSS防护必须在后端完成转义。
六、针对XSS特殊字符的终极防护方案
1、后端统一HTML实体转义(最有效)
使用
htmlspecialchars 函数,强制转义所有XSS高危特殊字符:
- & 转义为
< 转义为
> 转义为
" 转义为
' 转义为 '
转义后特殊字符失去HTML、JS解析能力,彻底无法触发XSS。
2、严格过滤控制空白字符
后端拦截 %00、%09、%0A、%0D 等所有非常规空白控制字符,杜绝空白符绕过。
3、开启CSP安全策略
配置内容安全策略,禁止加载内联JS、禁止未授权脚本执行,即使存在特殊字符注入也无法执行恶意代码。
4、输入白名单校验
核心业务场景仅允许正常文字、数字输入,直接拦截所有特殊符号,从源头杜绝注入。
七、全文总结
XSS注入的核心本质就是特殊字符的利用与绕过:尖括号构建标签、引号闭合属性、括号执行函数、空白字符绕过过滤、空字符截断规则、注释符截断代码。
所有XSS高阶Payload、WAF绕过、复杂题型,都是在基础特殊字符之上做编码、变形、替换、拼接。掌握每类特殊字符的作用与绕过思路,就能通杀绝大多数CTF XSS题型与常规业务漏洞挖掘。
防护核心:
不要依赖前端过滤、不要依赖简单关键词拦截,统一后端实体转义+CSP策略才是永久防护方案。
#XSS注入 #XSS特殊字符 #XSS绕过技巧 #Web安全 #渗透测试教程 #CTF刷题 #XSS漏洞防护 #前端安全 #代码审计 #网络安全干货
关于墨者安全
墨者安全致力于安全防护、服务器高防、网络高防、ddos防护、cc防护、dns防护、防劫持、高防服务器、高防dns、网站防护等方面的服务,全网第一款指纹识别技术防火墙,自研的WAF指纹识别架构,提供任意CC和
DDoS攻击防御