其他分享
首页 > 其他分享> > DVWA-XSS (Reflected) 反射性 XSS

DVWA-XSS (Reflected) 反射性 XSS

作者:互联网

反射性XSS,是非持久性,也是最常见的XSS,通过解析传入前段页面,常见为交互式输入框

LOW

审计源码


<?php
// 发送请求头 
header ("X-XSS-Protection: 0");

// 判断是否传入是否通过 name 键名传参
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // 将 name 传入的内容输入到页面
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?>

没有对传参name进行任何过滤,所以可以直接进行弹窗
<script>alert(document.cookie)</script>

成功获取cookie

反弹cookie可以去看我的另一篇博客,DVWA-XSS (DOM) DOM型跨站脚本攻击

Medium

审计源码


<?php
// 设置请求头
header ("X-XSS-Protection: 0");

// 判断是否传入 name 键名,和 name 的值是否为空
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // 获取传入的 name值
    // str_replace 替换 <script> 为空
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    // 将name 传参内容输入到页面
    echo "<pre>Hello ${name}</pre>";
}

?>

这里将我们传入的<script>脚本标签转为了空,根据str_replace函数的特性,只会进行一个过滤,所以可以进行双写绕过
<scri<script>pt>alert(document.cookie)</script>

成功弹窗

High

审计源码


<?php
// 设置请求头
header ("X-XSS-Protection: 0");

// 判断 name 是否传承那
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // 获取传入的内容
    // 使用 preg_replace 进行正则匹配
    // /.../之间的内容为正则匹配语法
    // .匹配除了换行的任意字符
    // * 匹配前面表达式零次或者多次
    // .* 就是匹配任意字符 
    //  /i 不区分大小写
    // 对 <script> 标签进行了严格的过滤
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

    // 将 name 输入到页面
    echo "<pre>Hello ${name}</pre>";
}

?>

<script>标签进行了严格的过滤,可以使用<img />src自加载特性,进行弹窗
<img src=1 one rror='alert(document.cookie)' />

成功弹窗

Impossible

审计源码

<?php

// 判断是否传入 name
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // 检查 user_token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // 获取传入的 name
    // htmlspecialchars() 函数会对 html 标签进行实例化
    $name = htmlspecialchars( $_GET[ 'name' ] );

    // 将 name 输入到页面
    echo "<pre>Hello ${name}</pre>";
}

// 生成user_token
generateSessionToken();

?>

可以看到,XSS也是非常容易防护的,只需要使用htmlspecialchars函数对html标签进行实例化即可

标签:XSS,name,Reflected,DVWA,源码,cookie,Hello,弹窗
来源: https://www.cnblogs.com/Junglezt/p/16336667.html