DVWA-XSS(Stored) 全级别教程
XSS(Stored)
Low等级
查看源码
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一栏输入,成功弹框
利用burpsuite抓包
将抓取的数据包,发送到“Repeater”
修改将name字段的内容,弹窗
获取cookie的值
修改最大长度限制
,成功弹框
Medium等级
查看源码
1.strip_tags()
函数剥去字符串中的 HTML、XML 以及 PHP 的标签,但允许使用标签。
2.addslashes()
函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。
可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了
利用双写绕过
用burpsuite抓包
<sc,成功弹框
获取cookie的值
修改最大长度
<sc,成功弹框
大小写混淆绕过
,成功弹框
<sc,成功弹框
High等级
查看源码
使用正则表达式过滤了
利用burpsuite抓包
改name参数为,成功弹窗
获取cookie
修改name最大长度
<img src=1 οnerrοr=alert(‘zwy’+document.cookie)> ,成功弹窗
Impossible等级
查看源码
可以看到,Impossible级别的代码使用htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为HTML实体,防止浏览器将其作为HTML元素。