dvwa 源码分析(二) --- dvwaPage.inc.php分析

在setup.php中,包含了这个文件,所以这里分析这个文件。

 1 <?php
 2 
 3 if( !defined( 'DVWA_WEB_PAGE_TO_ROOT' ) ) {
 4 
 5     define( 'DVWA System error- WEB_PAGE_TO_ROOT undefined' );
 6     exit;
 7 
 8 }
 9 
10 
11 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

。。

 

posted @ 2013-07-27 19:30  r3call  阅读(1749)  评论(0编辑  收藏  举报