DVWA XSS_S

文章展示了三个不同级别的XSS过滤情况。LOW级别仅过滤了一些基本字符;Medium级别增加了标签过滤和长度限制,但可以通过大小写和删除字符绕过;High级别使用正则表达式彻底过滤<script>,然而可以利用onerror事件触发XSS攻击。
摘要由CSDN通过智能技术生成

前置知识:

        0.firefox在输入框右键检查,可以查看对应值的源码

        1.stripslashes函数

        2. 

        3. 

        4. 

 LOW

        writeup:

        先看一下源码只是对一些空格、/、'、"进行了过滤

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = mysql_real_escape_string( $message );

    // Sanitize name input
    $name = mysql_real_escape_string( $name );

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );

    //mysql_close();
}

?> 

         这里直接尝试name=g,message=<script>alert(document.cookie);</script>,这里完美体现了stored XSS,每一次刷新网页所有alert都被执行了遍。

Medium:

        前置知识:

        1.

        2. 

        3.

        writeup:

        先看源码,发现medium对message的过滤较多,这里考虑对name进行payload

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = mysql_real_escape_string( $message );
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = str_replace( '<script>', '', $name );
    $name = mysql_real_escape_string( $name );

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );

    //mysql_close();
}

?>

        medium把name中的<script>替换成"",这里尝试大小写绕过,双写也可以。尝试<Script>alert("happy new year!");</script>,发现似乎有长度限制,看了源代码确实如此,这里删除10,这样就输入成功了

High:

        writeup:

        查看源码,和medium差不多,但是<script>被彻底过滤

<?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = strip_tags( addslashes( $message ) );
    $message = mysql_real_escape_string( $message );
    $message = htmlspecialchars( $message );

    // Sanitize name input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );
    $name = mysql_real_escape_string( $name );

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );

    //mysql_close();
}

?> 

        尝试调用其他事件来触发,payload:name=<img src=1 οnerrοr=alert("ahhhhhhhhhhh");>,成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QMDD

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

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

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

打赏作者

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

抵扣说明:

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

余额充值