• 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

    。。

  • 相关阅读:
    【CLR Via C#】2 程序集
    值类型与引用类型
    .Net Framework简介
    【CLR Via C#】15 枚举类型与位类型
    Dictionary的用法及用途
    枚举
    GitExtensions使用教程
    Bootstrap如何禁止响应式布局
    【StyleCop】StyleCop规则汇总
    优化SQL查询:如何写出高性能SQL语句
  • 原文地址:https://www.cnblogs.com/tk091/p/3219968.html
Copyright © 2020-2023  润新知