关于DVWA的学习-XSS(DOM)

关于DVWA的学习-XSS(DOM)

Background

需要的前置知识(仅针对本部分)

  1. HTML标签(比如 div, a, h, p, script, form等等)菜鸟教程-HTML
  2. 简单的JavaScript语法知识
  3. DOM相关知识(DOM简单来说就是把网页的HTML看作树结构,JS代码利用document的一系列API可对它进行操作) DOM教程
  4. XSS攻击的基本概念

low

在这里插入图片描述
选择语言的界面,没啥特别的,看看网页代码吧。
在这里插入图片描述

document.location.href: 获取当前页面URL
indexOf: 获取子字符串起始索引
document.write: 写入html代码

很清楚,我们可以在URL做文章来产生一些”效果“.
这里插入一个最常见的JS的alert语句,便可以产生弹窗效果:
在这里插入图片描述
在这里插入图片描述
这一题其实就是利用一些document函数以及简单的JS代码知识来在基本的网页上做一些手脚。


medium

不多bb,在low的基础上依旧先F12;
在这里插入图片描述
网页代码没有任何区别,但这时候和low一样输入script,并不能弹窗,应该是后台代码对输入参数有过滤,于是查看PHP代码:
在这里插入图片描述
过滤了<script
查看别人的经验贴之后得知可以利用img标签中的onerror回调函数实现弹窗:
在这里插入图片描述

在这里插入图片描述
但是这里的闭合很奇怪,因为原script中已经有了”< /option >“,在URL中又加了一个"< /option >"不会出现语法错误吗?怀着这样的疑问,我又尝试了一下
在这里插入图片描述
在这里插入图片描述

看来闭合标签个数超过并不会影响实际使用,不会报错。
第二点疑问:既然可以直接闭合< option >,那么为什么不能直接用这个:
在这里插入图片描述
这其实就跟< select >标签性质有关了,< select >中只能加< option >,别的不会显示,比如下面这个例子:
在这里插入图片描述
因此,选择先将< option >闭合,再将< script >闭合(这两个闭合顺序也不可颠倒,看看HTML代码就知道),之后插入onerror函数。


high

DVWA页面没有改变,我们直接打开PHP源码查看过滤机制:
在这里插入图片描述
采用了白名单机制,仅允许四种语言输入,其他字符串一律改写为English。

看了一些经验帖,在提交的URL后加上"#< script>alert(/xss/);< /script>"即可,因为url中#后面内容为跳转到页内锚点,不会发送到后端服务器。 也就避免了过滤。

关于#这里再举个例子,输入页面最下方元素的id,页面会自动下滑到底部
在这里插入图片描述


impossible

在这里插入图片描述
还挺狂,那就看看网页代码;
在这里插入图片描述
和之前唯一的区别就是:decodeURI(lang)和(lang)。似乎没有这个解码函数就无法解析<>等符号。
网上搜了一些经验贴,写的太垃圾了,说的都是屁话,对于这个函数的作用,还是来亲自试验一下。

这里先说一下 URL和URI的区别

在这里插入图片描述
也就是说只要URI中带有除了上面说的其他符号的,都会被编码,如果不使用decodeURI,就会出现下面这种情况:
在这里插入图片描述


总结

  1. 基本的HTML语法,各种标签的作用,比较特殊的包括< form>,< script>, < select>等。
  2. DOM的含义以及初级用法,即document提供的各种API
  3. XSS-DOM的弹窗方法,比如利用< script>和< img>的onerror,以及URL中的”#“的作用
  4. 常见的XSS-DOM防御包括服务器端过滤< script>,白名单机制,前端不使用decodeURI函数等。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江畔有雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值