在setup.php中,包含了这个文件,所以这里分析这个文件。
<?php if( !defined( 'DVWA_WEB_PAGE_TO_ROOT' ) ) { define( 'DVWA System error- WEB_PAGE_TO_ROOT undefined' );
exit; } session_start(); // Creates a 'Full Path Disclosure' vuln.
在setup.php中,定义了DVWA_WEB_PAGE_TO_ROOT为空
所以这里判断是否已经定义,如果未定义,则会报错,我测试了,报错是
Warning: define() expects at least 2 parameters, 1 given
然后退出。
然后是启用会话。
// Include configs
require_once DVWA_WEB_PAGE_TO_ROOT.'config/config.inc.php'; require_once( 'dvwaPhpIds.inc.php' );
然后再次包含两个文件,我们先去分析这两个文件。
dvwa 源码分析(三) --- config.inc.php分析
dvwa 源码分析(四) --- dvwaPhpIds.inc.php分析
分析了这两个文件,我们继续往下分析
声明html变量
// Declare the $html variable
if(!isset($html)){ $html = ""; }
$html变量声明
设置dvwa安全等级cookie
// Set security cookie to high if no cookie exists
if (!isset($_COOKIE['security'])){ setcookie( 'security', 'high' ); }
设置安全等级cookie
返回dvwa版本号
// DVWA version
function dvwaVersionGet() { return '1.0.7'; }
dvwa 版本
dvwa 发布日期
// DVWA release date
function dvwaReleaseDateGet() { return '08/09/10'; }
dvwa发布日期
以数组的形式定义会话信息
// Start session functions -- function &dvwaSessionGrab() { if( !isset( $_SESSION[ 'dvwa' ] ) ) { $_SESSION[ 'dvwa' ] = array(); } return $_SESSION[ 'dvwa' ];
}
启用会话功能
判断用户是否登录,是否使用IDS功能
function dvwaPageStartup( $pActions ) { if( in_array( 'authenticated', $pActions ) ) { if( !dvwaIsLoggedIn()){ dvwaRedirect( DVWA_WEB_PAGE_TO_ROOT.'login.php' ); }
} if( in_array( 'phpids', $pActions ) ) { if( dvwaPhpIdsIsEnabled() ) { dvwaPhpIdsTrap(); }
}
}
dvwaPageStartup
启用IDS功能
function dvwaPhpIdsEnabledSet( $pEnabled ) { $dvwaSession =& dvwaSessionGrab(); if( $pEnabled ) { $dvwaSession[ 'php_ids' ] = 'enabled'; } else { unset( $dvwaSession[ 'php_ids' ] ); }
}
dvwaPhpIdsEnabledSet
判断是否启用了IDS功能
function dvwaPhpIdsIsEnabled() { $dvwaSession =& dvwaSessionGrab(); return isset( $dvwaSession[ 'php_ids' ] ); }
dvwaPhpIdsIsEnabled
用户登录
function dvwaLogin( $pUsername ) { $dvwaSession =& dvwaSessionGrab(); $dvwaSession['username'] = $pUsername; }
dvwaLogin
判断用户是否已经登录
function dvwaIsLoggedIn() { $dvwaSession =& dvwaSessionGrab(); return isset( $dvwaSession['username'] ); }
dvwaIsLoggedIn
用户退出,清除会话
function dvwaLogout() { $dvwaSession =& dvwaSessionGrab(); unset( $dvwaSession['username'] ); }
dvwaLogout
重新加载
function dvwaPageReload() { dvwaRedirect( $_SERVER[ 'PHP_SELF' ] ); }
dvwaPageReload
返回当前用户
function dvwaCurrentUser() { $dvwaSession =& dvwaSessionGrab(); return ( isset( $dvwaSession['username']) ? $dvwaSession['username'] : '') ; }
dvwaCurrentUser
初始化页面
function &dvwaPageNewGrab() { $returnArray = array(
'title' => 'Damn Vulnerable Web App (DVWA) v'.dvwaVersionGet().'',
'title_separator' => ' :: ',
'body' => '',
'page_id' => '',
'help_button' => '',
'source_button' => '',
); return $returnArray;
}
dvwaPageNewGrab
获取当前安全等级
function dvwaSecurityLevelGet() { return isset( $_COOKIE[ 'security' ] ) ? $_COOKIE[ 'security' ] : 'high'; }
dvwaSecurityLevelGet
设置安全等级
function dvwaSecurityLevelSet( $pSecurityLevel ) { setcookie( 'security', $pSecurityLevel ); }
dvwaSecurityLevelSet
启用消息函数,以压入栈的方式(数组)
// Start message functions --
function dvwaMessagePush( $pMessage ) { $dvwaSession =& dvwaSessionGrab(); if( !isset( $dvwaSession[ 'messages' ] ) ) { $dvwaSession[ 'messages' ] = array(); } $dvwaSession[ 'messages' ][] = $pMessage;
}
Start message functions
弹出消息,以出栈的方式
function dvwaMessagePop() { $dvwaSession =& dvwaSessionGrab(); if( !isset( $dvwaSession[ 'messages' ] ) || count( $dvwaSession[ 'messages' ] ) == 0 ) { return false; } return array_shift( $dvwaSession[ 'messages' ] );
}
dvwaMessagePop
以html的形式返回所以消息
function messagesPopAllToHtml() { $messagesHtml = ''; while( $message = dvwaMessagePop() ) { // TODO- sharpen! $messagesHtml .= "<div class=\"message\">{$message}</div>"; } return $messagesHtml;
}
messagesPopAllToHtml
。。