• 注册
当前位置:1313e > html >正文

3-11xss之htmlspecialchars绕过演示

我们这篇文章,说一下php里面用的比较多的一个方法,那就是htmlspecialchars()函数

xss关键防范措施其中一个关键的地方,就是我们在输出的时候,要做前端实体的转义

XSS绕过-关于htmlspecialchars()函数

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

 & (和号)成为 &
 " (双引号)成为 "
 ' (单引号)成为 '
 < (小于)成为 <
 > (大于)成为 >

可用的引号类型:

ENT_COMPAT - 默认。仅编码双引号。

ENT_QUOTES - 编码双引号和单引号。

ENT_NOQUOTES - 不编码任何引号。

$ok=htmlspecialchars($_GET['message'])

默认情况下,不会对单引号进行编码,因为单引号不是html前端实体里面,一个规范的编码,所以说,他不会对单引号进行处理的,当我们输出点比较特殊的话,虽然我们用了htmlspecialchars()处理,但是仍然可能出现xss漏洞

做修复的时候,如果是php语言,里面涉及这么个方法,或者是其它语言,我们一定要搞清楚,它这个方法是不是够全面,我们这里选择ENT_QUOTES

案例演示

我们切换到xss之htmlspecialchars项目里面,还是按照我们之前常规的思路,

"'<>&1111

在这里插入图片描述

我们看一下源码

在这里插入图片描述

我们可以看到输出点是在我们,a标签的href里面,我们看到这里出现了很多html实体的符号,也就是说htmlspecialchars会对我们相关的内容进行编码,我们可以双引号,左右尖括号,&都被进行了编码,单引号没有进行处理,这个地方就是用了默认的htmlspecialchars来做后端的过滤,这个时候,我们可以构造一个payload进行过滤,

q' onclick='alert(111)'

单引号就是把前面的单引号闭合掉,后面去输一个onclick,这个onclick是可以被执行的,因为这个单引号没有做处理,它仍然是一个生效的单引号

在这里插入图片描述

我们onclick一下

在这里插入图片描述

这就是它后端处理的一个输入,我们可以看一下后端的代码

在这里插入图片描述

它会对接入的数据进行处理,通过htmlspecialchars做处理,处理完之后,它就在a标签里面输出了,

$message=htmlspecialchars($_GET['message']);

它这个地方用的是默认的方法,它并没有在后面指定对单引号和双引号,都做处理,所以说,产生了这个问题

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录