反射型XSS攻击
反射型 XSS 是指应用程序通过 Web 请求获取不可信赖的数据,并在未检验数据是否存在恶意代码的情况下,将其发送给用户。现在我们就用dvwa来浅浅学习一下这个漏洞吧!(ps:本文为学习笔记,仅供学习)
Low
Low级别一般来说都没有防护,所以直接尝试使用<script>alert(‘hacker’)</script>。
成功
Medium
换成中级,先来一下<script>alert(‘hacker’)</script>。
发现直接被输出了,没有形成弹窗。考虑到有可能是因为<script>被过滤了。所以我们可以尝试一下用大小写,或复写,也可以换成其他的标签如”img”来尝试一下。
首先尝试一下用大小写,或复写<Script>alert(‘hacker_medium_dxx’)</Script>,<sc<script>ript>alert('hacker_medium_dxx')</script>
成功,所以medium应该只是过滤了<script>
查看源代码
果不其然,是将<script>过滤掉了,所以只要将<script>复写(例如:<sc<script>ript>在识别时会将<script>赋值为空,就无形中将原来分离的<sc、ript>拼凑回来成为<script>,从而绕过),将<script>中的某些字母或全部换成大写,因为无论大小写都可以正常识别,但作为一个参数,<script>和<SCript>就完全不一样,从而完成绕过。反正有漏洞就对了
High
做题习惯先来一手上一级能行的方法。直接复写<sc<script>ript>alert('hacker_medium_dxx')</script>。没想到就只剩下个<
还记得上一级别中提到的其他标签码,上一节是因为已经可以进行了,所以没别要再实验尝试。
输入<img src = 1 onerror = alert('hacker_hi!)>
当然也可用其他的JavaScript标签进行绕过。比如Body、iframe。
查看一下源码
使用通配符,完全匹配script*N,将所有有关script的标签全被过滤,但是没有过滤其他的标签,所有还是有漏洞可寻了
Impossible
尝试过没成功,所以惯例看源码
弄了token,又使用了htmlspecialchars( $_GET[ 'name' ] ),将敏感字符都转移HTML实体,进一步的修复了xss漏洞。