天天看点

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

文章目录

    • 1、Low
    • 2、Medium
    • 3、High
    • 4、Impossible

1、Low

测试代码:

<script>alert(document.cookie)</script>

,弹出当前Cookie

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

成功,未做任何防范。

查看源码:

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

其中:

array_key_exists()

函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。

2、Medium

继续尝试刚才的语句

<script>alert(document.cookie)</script>

时,出现以下内容:

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

再次尝试:

<img src = alert(1)>

,成功爆出

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

判断应该是对

<script> </script>

进行了转义。

尝试大小写绕过

<sCript>alert(1)</scRipt>

,成功注入!

尝试嵌套绕过

<sc<script>ript>alert(1)</script>

,成功注入,且判断出只对

<script>

进行了转义。

查看源码:

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

可见,只使用

str_replace()

函数对

<script>

进行了过滤,且该函数区分大小写。

3、High

尝试大小写绕过:

<sCript>alert(1)</scRipt>

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

结果是一个尖括号:>

尝试普通注入:

<script>alert(1)</script>

,结果是:>

尝试添加 > 注入:

<script>alert(1)</script>>

,结果是:>>

尝试嵌套注入:

<sc<script>ript>alert(1)</script>

,结果是:>

尝试img标签:

<img src onerror=alert(1)>

,成功注入

尝试svg标签:

<svg onload=alert(1)>

,成功注入

根据以上结果判断,依然是对

<script>

标签进行了过滤。

查看源码:

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

源码显示,使用正则进行了过滤,因此嵌套和大小写绕过都失效。

根据正则,白盒测试,进行编码绕过。

对<>进行HTML编码,此时script语句为:

&lt;script&gt;alert(1)&lt;/script&gt;

,尝试注入:

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

查看页面元素,显示成功注入,但是语句被放入了pre实体文本标签内,尝试闭合pre标签,重新注入,但是依然失败。到此

4、Impossible

DVWA系列---反射型 XSS(Reflected Cross Site Scripting)

htmlspecialchars() 函数将内容转为HTML实体文本,又加入了Token,打消了任何念头。