N11 DVWA 存储型XSS

一、Low级别

1.代码审计
在这里插入图片描述
这里我们可以看见message和name都使用的POST进行传递参数,但message使用了stripslashes(); 函数,该函数的功能是将反斜杠过滤。那么我们message不能完成script的闭合。
但在name参数上,它直接将参数传递到数据库里。这意味着我们可以在name处找到一个存储型XSS注入点。

2.尝试测试
下面我们构建一个payload

<script>alert("xss");</script>

将payload输入对话框,发现只能输入一部分字符,在前段有字符限制。
在这里插入图片描述
下面我们按F12进入开发模式,点击最左面的小箭头的图标,然后点击输入框。在这里插入图片描述
双击maxlength=“10”,将10改成一个比较大的数。
在这里插入图片描述

这里猴子君改成了100000
在这里插入图片描述

下面,我们将payload重新写到输入框,发现可以全部写入。
在这里插入图片描述
点击Sign Guestbook按钮,将数据写入数据库。
我们发现页面返回了一个弹窗
在这里插入图片描述
点击刷新,发现弹窗又出现了。我们查看数据库,发现这条语句已经成功写入数据库。
在这里插入图片描述
这样,low级别的存储型XSS就完成了。

二、Medium级别

1.代码审计
在这里插入图片描述
这里我们可以看见,同样是使用POST请求传递message和name的参数。而message参数使用了htmlspecialchars()函数,将参数转译成html编码后,再进行导入数据库。
而name参数是使用str_replace()参数进行过滤,这个参数我们在反射型xss有讲过,这个函数只替换一次,而且大小写敏感。

2.尝试测试
下面我们构建payload:

1:	<sc<script>ript>alert("xss");</script>
2:	<Script>alert("xss");</Script>

将payload提交到输入框。我们将这条语句同时提交到message,我们看一下后台数据库是怎样存储这两条数据的。
首先产生了弹框,刷新之后发现依然有这个弹框。证明已经写入数据库。
在这里插入图片描述
我们看一下数据库,我们发现comment字段的js语句中的特殊符号变成了html编码,而name字段的js语句完整的写入到数据库中。
在这里插入图片描述
在这里插入图片描述

这样,medium级别的XSS就完成了。

三、High级别

1.代码审计
在这里插入图片描述
这里我们可以看见,同样是使用POST请求传递message和name的参数。而message参数使用了addslashes() 函数,该函数的功能是将特殊字符前加入反斜杠进行转义。而后使用了strip_tags()函数,该函数的功能是剥去字符串中的 HTML、XML 以及 PHP 的标签。而后又使用了htmlspecialchars()将message参数转义成html编码,再写入数据库。
而name字段,只使用preg_replace()函数,配合正则表达式。过滤掉<script>字段,同时大小写不敏感,全部过滤。而这里只限制了我们使用<script>,却没限制我们使用HTML DOM 事件。这里我们在反射型XSS中有讲。

2.尝试测试
构造payload

<img src="#" onerror=alert("xss");>

我们将这句payload分别写入name和message字段,看一下有什么样的效果。
点击Sign Guestbook,发现有弹窗,刷新之后依然有弹窗,证明我们已经将这句js代码写入的数据库。
在这里插入图片描述
我们发现,comment字段已经被strip_tags()函数删除,而name字段的payload已经成功写入数据库。
在这里插入图片描述

这样,high级别的存储型xss就完成了。

四、impossible级别

1.代码审计
在这里插入图片描述

这里我们可以看见,两个参数都使用了stripslashes()函数和htmlspecialchars()函数对参数进行过滤。
stripslashes()函数的功能是删除反斜杠,htmlspecialchars()函数的功能是将字符进行html编码。
经过这样的处理之后,我们的语句就不能构造成闭合的js代码,进而执行了。
这样就很好的解决了XSS漏洞的问题。

五、防御

1.过滤用户输入的敏感字符
2.使用htmlspecialchar()将输入参数转译为html编码再操作
3.使用owasp等安全xss处理API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尐猴子君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值