DVWA-12.1 XSS (Stored)(存储型跨站脚本)-Low

 
更多

Low Level

查看代码

<?php

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

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitize name input
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Update database
    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";
    $result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );

    //mysql_close();
}

?>

相关函数介绍

trim(string,charlist)

函数移除字符串两侧的空白字符或其他预定义字符,可选参数charlist支持添加额外需要删除的字符,如果被省略,则移除以下所有字符:

  • “\0” – NULL
  • “\t” – 制表符
  • “\n” – 换行
  • “\x0B” – 垂直制表符
  • “\r” – 回车
  • ” ” – 空格

mysql_real_escape_string(string,connection)

函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。

stripslashes(string)

函数删除字符串中的反斜杠。

可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞。

漏洞利用

message一栏输入<script>alert(‘xss’)</script>,成功弹框

用户名无法直接做XSS,因为前端代码有用户名长度限制

但是可以通过抓包的方式绕过。

打赏

本文固定链接: https://www.cxy163.net/archives/4881 | 绝缘体

该日志由 绝缘体.. 于 2020年05月06日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: DVWA-12.1 XSS (Stored)(存储型跨站脚本)-Low | 绝缘体
关键字: , , , ,

DVWA-12.1 XSS (Stored)(存储型跨站脚本)-Low:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter