zoukankan      html  css  js  c++  java
  • 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

    。。

  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/tk091/p/3219968.html
Copyright © 2011-2022 走看看