DVWA-XSS(Stored) 全级别教程

XSS(Stored)

Low等级

查看源码

DVWA-XSS(Stored) 全级别教程

1.trim(string,charlist)
函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r以及空格,可选参数charlist支持添加额外需要删除的字符。
2.mysql_real_escape_string(string,connection)
函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。
3.stripslashes(string)函数删除字符串中的反斜杠。
可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞。

message一栏输入,成功弹框DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

利用burpsuite抓包

DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

将抓取的数据包,发送到“Repeater”

DVWA-XSS(Stored) 全级别教程

修改将name字段的内容,弹窗

DVWA-XSS(Stored) 全级别教程

获取cookie的值

修改最大长度限制
DVWA-XSS(Stored) 全级别教程

,成功弹框
DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

Medium等级

查看源码

DVWA-XSS(Stored) 全级别教程

1.strip_tags()
函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签。
2.addslashes()
函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。
可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了

利用双写绕过

用burpsuite抓包

DVWA-XSS(Stored) 全级别教程
DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

<sc,成功弹框
DVWA-XSS(Stored) 全级别教程

获取cookie的值

修改最大长度

DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

<sc,成功弹框
DVWA-XSS(Stored) 全级别教程
DVWA-XSS(Stored) 全级别教程

大小写混淆绕过

,成功弹框
DVWA-XSS(Stored) 全级别教程

<sc,成功弹框

DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

High等级

查看源码

DVWA-XSS(Stored) 全级别教程

使用正则表达式过滤了

利用burpsuite抓包

DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程
改name参数为DVWA-XSS(Stored) 全级别教程,成功弹窗
DVWA-XSS(Stored) 全级别教程

获取cookie

修改name最大长度
DVWA-XSS(Stored) 全级别教程

<img src=1 οnerrοr=alert(‘zwy’+document.cookie)> ,成功弹窗
DVWA-XSS(Stored) 全级别教程DVWA-XSS(Stored) 全级别教程

Impossible等级

查看源码

DVWA-XSS(Stored) 全级别教程

可以看到,Impossible级别的代码使用htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为HTML实体,防止浏览器将其作为HTML元素。