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:不编码任何引号。

用法

预定义的字符

&:转换为&
":转换为"
':转换为成为 '
<:转换为&lt;
>:转换为&gt;

绕过:

如果默认只过滤双引号那么可以通过单引号绕过
' onclick='alert(123)'

如果单引号和双引号都过滤了,那么直接不用以上预定义字符,用payload:javascript:alert(123)

posted @ 2026-01-27 14:49  Yhsec  阅读(20)  评论(0)    收藏  举报
//雪花飘落效果