XSS中的htmlspecialchars()函数绕过
htmlspecialchars()函数
htmlspecialchars()函数:把预定义的字符转换为 HTML 实体
绕过原理:
htmlspecialchars()函数把预定义的字符转换为HTML实体,从而使XSS攻击失效。但是这个函数默认配置不会将单引号和双引号过滤
只有设置了quotestyle规定如何编码单引号和双引号才能会过滤掉单引号
语法
htmlspecialchars(string,flags,character-set,double_encode)
参数
- string:必需,规定要转换的字符串
- flags :可选,规定如何处理引号、无效的编码以及使用哪种文档类型
- character-set :可选,一个规定了要使用的字符集的字符串,如:UTF-8(默认)
- double_encode :可选,布尔值,规定了是否编码已存在的 HTML 实体。
flags参数可用的引号类型
- ENT_COMPAT :默认仅编码双引号。
- ENT_QUOTES:编码双引号和单引号。
- ENT_NOQUOTES:不编码任何引号。
用法
预定义的字符
&:转换为&
":转换为"
':转换为成为 '
<:转换为<
>:转换为>
绕过:
如果默认只过滤双引号那么可以通过单引号绕过
' onclick='alert(123)'
如果单引号和双引号都过滤了,那么直接不用以上预定义字符,用payload:javascript:alert(123)

浙公网安备 33010602011771号