这关是一个论坛功能,把用户提交的内容插入到页面进行展示。

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

一、Low级别

低级别中Message字段没有过滤,直接提交代码即可,payload:

<script>alert('就TM你叫韩毅啊')</script>

复制到Message的输入框中,点击 Sign Guestbook

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

弹窗就代表通过

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

二、Medium级别

先清除历史记录,防止之前提交的内容影响接下来的关卡。

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

由源码可知,Message字段被 htmlspecialchars() 转移成纯字符,无法XSS
而Name字段只过滤了一遍小写的<script,可以考虑双写绕过、大小写绕过

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

前端限制了Name输入框的长度,右键-检查-修改name输入框的maxlength值,回车生效
提示:这样临时修改的前端代码,刷新或提交就失效,然后就需要再次修改。

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP
使用大小写绕过,payload:

<Script>alert(1)</Script>

在Name输入框,输入payload,点 Sign Guestbook
提示:如果长度被限制,就重新右键修改 maxlength

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP
双写绕过也可以,payload:

<scr<script>ipt>alert('就TM你叫韩毅啊')</Script>

三、Hign级别

记得先 clear Guestbook 清除历史记录
高级别在中级的基础上,又利用正则表达式,对Name字段增加了大小写和双写的过滤

DVWA-XSS (Stored) Low/Medium/High低中高级别-LMLPHP

只过滤了<script,使用替代标签绕过即可,payload:

<svg onload=alert('就TM你叫韩毅啊')>
<img src=1 onerror=alert('就TM你叫韩毅啊')>
<body onload=alert('就TM你叫韩毅啊')>
06-02 03:10