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