新手DVWA-XSS (Reflected)

Posted n0ri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手DVWA-XSS (Reflected)相关的知识,希望对你有一定的参考价值。

XSS (Reflected)

XSS(Cross Site Scripting)即跨站脚本攻击,是指由于过滤不当导致恶意代码注入网页,当受害者访问网页时,浏览器执行恶意代码,执行攻击者的攻击行为

low

服务器核心代码

<?php

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

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
    // Feedback for end user
    echo ‘<pre>Hello ‘ . $_GET[ ‘name‘ ] . ‘</pre>‘;
}

?> 

从代码上看,没有任何过滤

解法

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

技术图片

成功弹窗

medium

服务器核心代码

<?php

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

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
    // Get input
    $name = str_replace( ‘<script>‘, ‘‘, $_GET[ ‘name‘ ] );

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

?> 

medium难度代码过滤了script标签

解法

双写绕过<scri<script>pt>alert(1)</script>

技术图片

成功弹窗

high

服务器核心代码

<?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>";
}

?> 

正则匹配彻底过滤掉了script标签,改用其他标签

解法

输入<img src=123 onerror=alert(1)>

技术图片

成功弹窗

impossible

服务器核心代码

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ ‘name‘ ] != NULL ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ ‘user_token‘ ], $_SESSION[ ‘session_token‘ ], ‘index.php‘ );

    // Get input
    $name = htmlspecialchars( $_GET[ ‘name‘ ] );

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

// Generate Anti-CSRF token
generateSessionToken();

?>

代码使用了htmlspecialchars()函数,将‘<‘,‘>‘转换为html实体,所以已经不存在XSS漏洞了

以上是关于新手DVWA-XSS (Reflected)的主要内容,如果未能解决你的问题,请参考以下文章

DVWA-XSS (Reflected) 反射性 XSS

DVWA-XSS(Reflected)Low/Medium/High低中高级别

新手DVWA-XSS (Stored)

DVWA-XSS(全等级)

dvwa-xss

DVWA XSS (Reflected) 通关教程