Low
查看源代码得知low级别没有任何的过滤
输入用户名,内容显示在页面上
那么直接上JavaScript代码payload:
<script>alert("you've been hacked!")</script>
代码成功执行,接下来拿cookie:
<script>alert(document.cookie)</script>
无任何过滤的反射型XSS攻击成功
Medium
照样上代码
中级别的难度提升,直接上代码无效,应该是后端有过滤机制
查看源代码
网页后端的php代码中增加了str_replace()函数。这个函数的作用是将代码进行替换。这里是将<script>标签替换成NULL空值。有两种方式进行绕过:
1.大小写:将标签换成首字母大写:<Script>alert(document.cookie)</script>或者全大写<SCRIPT>alert(document.cookie)</script>
2.双写嵌套:在标签中嵌套一层标签<scr<script>ipt>alert(document.cookie)</script>
两种方法成功绕过
High
来到high难度
发现简单的绕过已经都不起作用了
查看源代码,过滤机制更加严格了
这里使用了preg_replace()函数进行过滤,函数执行一个正则表达式的搜索和替换。
更多细节知识参考php代码教程
不能使用<script>标签,我们可以替换成别的标签,如<img>、<iframe>
<img src=1 οnerrοr=alert(document.cookie)>:
onerror属性的作用是在图片加载出现错误时执行JavaScript代码,这里用于存放我们的XSS代码,由于我们设置的src为1,不是有效的url,所以出现错误无法打开图片,执行了onerror事件。
<iframe src="http://localhost/dvwa/"name=”XSS”width=”1500px”height=”1000px”></iframe>:
反射型XSS攻击是一次性的,当我们更换页面或者刷新时原来的代码就不存在了,这就是反射型的特点。
Impossible
分析源代码
源代码很简短,使用了htmlspecialchars()函数过滤了html标签
同时使用了Anti-CSRF token机制完全杜绝了XSS和CSRF漏洞
欢迎交流反馈提出意见