Security ❀ XSS 反射型 Reflected Cross Site Scripting (XSS)

Posted 国家级干饭型选手°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Security ❀ XSS 反射型 Reflected Cross Site Scripting (XSS)相关的知识,希望对你有一定的参考价值。

1、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>';
}

?>

源码无防护,支持XSS攻击即可;

结果验证:

2、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>";
}

?>

源码中str_replace函数区分大小写;

结果验证:

3、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的正则表达式,可以使用其他标签进行XSS;

结果验证:

4、impossible


源码解析:htmlspecialchars函数可以将< >标签符号字符化输出,无法进行代码执行;

<?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();

?>

以上是关于Security ❀ XSS 反射型 Reflected Cross Site Scripting (XSS)的主要内容,如果未能解决你的问题,请参考以下文章

存储型XSS与反射型XSS有啥区别?

信安小白,一篇博文讲明白存储型反射型XSS漏洞

存储型XSS与反射型XSS有啥区别

反射获取泛型信息

XSS

代码审计学习之反射型XSS