DVWA靶场通关实录-Reflected Cross Site Scripting (XSS)篇

0x01 简介

Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。


0x02 反射型xss-Low

构造<script>alert(1);</script>语句即可成功,跟dom型xss攻击方法一样,毕竟dom型xss是特殊的反射型xss嘛。

image.png


0x03 反射型xss-Medium

跟dom型一样,<script也是被过滤了。重新构造攻击语句进行绕过吧
"></option></select><img src=a onerror="javascript:alert(1);"/>

image.png


0x04 反射型xss-High

high比medium的过滤更加严格了,来试试绕过吧
测试了<>没有被过滤掉,然后测试得知单引号'和双引号"也没有被过滤掉。
构造语句成功绕过"><img src=a onerror="alert(1);">

image.png

看看源代码:

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

0x05 防御方法

  • 对输入(和URL参数)进行过滤
  • 对输出进行编码
  • 白名单和黑名单结合过滤
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容