DVWA-XSS (Stored)

跨站点脚本 (XSS)”攻击是一种注入问题,其中恶意脚本被注入到原本良性和受信任的网站上。 当攻击者使用 Web 应用程序发送恶意代码(通常以浏览器端脚本的形式)时,就会发生 XSS 攻击, 给其他最终用户。允许这些攻击成功的缺陷非常普遍,并且发生在使用输出中用户输入的Web应用程序的任何地方, 无需验证或编码。

攻击者可以使用 XSS 向毫无戒心的用户发送恶意脚本。最终用户的浏览器无法知道脚本不应该被信任, 并将执行 JavaScript。由于恶意脚本认为脚本来自受信任的来源,因此可以访问任何 Cookie、会话令牌或其他 您的浏览器保留并与该网站一起使用的敏感信息。这些脚本甚至可以重写 HTML 页面的内容。

XSS 存储在数据库中。XSS 是永久性的,直到重置数据库或手动删除有效负载。


目的

将每个人重定向到您选择的网页。


低水平

在将请求的输入包含在输出文本中之前,低级别不会检查该输入。

Spoiler: Either name or message field: .

' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '
' ); //mysql_close(); } ?>

这是一个用于将用户输入数据插入到数据库中的 PHP 脚本。脚本首先将用户输入数据中的空格和换行符删除,并使用 `stripslashes()` 函数删除可能存在的反斜杠字符。

随后脚本使用 `mysql_real_escape_string()` 函数对用户输入数据进行净化,并将其放入 `$query` 变量中,然后通过 `mysqli_query()` 函数将数据插入到数据库中。

在本脚本中,存在使用 `mysql_real_escape_string()` 函数进行净化,避免SQL注入攻击的风险。但是,它仍然存在一些漏洞,如可能的XSS攻击等。

因此,在处理用户输入数据时,应该采取更多种类的净化方法,并使用适当的权限和限制验证来确保Web应用程序的安全性和可靠性。同时,拒绝对使用过时且易受攻击的 `mysql` 扩展方法,这样可以更安全的使用 PHP 语言。

DVWA-XSS (Stored)_第1张图片

DVWA-XSS (Stored)_第2张图片 

 

输入js,点击sign,显示了alert,攻击成功

 

中级

开发人员添加了一些保护,但是并没有以相同的方式完成每个字段。

Spoiler: name field: .
', '', $name );
    $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( '
' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '
' ); //mysql_close(); } ?>

这是一个将用户输入数据插入到数据库中的 PHP 脚本,并采用多种净化方法来增强安全性。

与之前的脚本不同,这个脚本使用 `strip_tags()` 函数从用户输入的消息中删除任何HTML标记,避免XSS攻击。同时,将特殊字符添加反斜杠,并使用 `mysqli_real_escape_string()` 函数进行SQL注入攻击的防御。同时,使用 `htmlspecialchars()` 函数转义用户消息中的特殊字符。

对于用户名,脚本使用 `str_replace()` 函数将 `

你可能感兴趣的:(安全测试,安全测试)