第十五天DOM型xss和编码绕过问题

DOM型xss

对象模型(Document Object Model),即大名鼎鼎的DOM。
DOM可以被认为是一种通过将页面元素以对象的树形方式表现,以便由Javascript组织处理的实现方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

特点2 无需服务器参与
在这里插入图片描述
为什么右键查看源代码 无法找到插入的payload
源代码 来源于服务器的返回 而dom型xss无需服务器的参与 所以此时无法修改右键查看的源代码

  1. DOM XSS与反射型XSS和存储型XSS的差别是在于DOM
    XSS的代码不需要服务器解析响应的直接参与,触发XSS漏洞靠的是浏览器DOM解析器的解析,和服务器没有直接关系,可以完全认为是客户端的事情。
    第二个,往往查看源码无法找到我们拼凑进去的标签
' onclick=alert(/xss/) //

htmlspecialchars()函数的功能如下:

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

预定义的字符是:

& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为 ’
< (小于)成为 <

(大于)成为 >

它的语法如下:
htmlspecialchars(string,flags,character-set,double_encode)

其中第二个参数flags需要重要注意,很多开发者就是因为没有注意到这个参数导致使用htmlspecialchars()函数过滤XSS时被绕过。因为flags参数对于引号的编码如下:

可用的引号类型:

ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
默认是只编码双引号的!默认只编码双引号!默认只编码双引号……重要的事情说三遍!!!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

htmlspecialchars绕过

代码

<?php
$js_inject = htmlspecialchars($_GET['inject']);
$js = "<img src = '$js_inject' > ";
echo $js; ?>
    轻松绕过:

在这里插入图片描述

在这里插入图片描述

加上ENT_QUOTES参数:

$js_inject = htmlspecialchars($_GET['inject'], ENT_QUOTES);
$js = "<script>$js_inject</script>";
echo $js;

在这里插入图片描述

在这里插入图片描述

htmlspecialchars并不能杜绝xss漏洞

简单混淆

在这里插入图片描述

混淆绕过

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值