• 实战DVWA!


    DVWA漏洞训练系统,来个大图^-^

     

     

     

     

    1.首先试了下DVWA的命令执行漏洞command execution     这是我在Low级别上测试的,另外附上low级别代码:

    <?php

    if( isset( $_POST[ 'submit' ] ) ) {     //isset()函数,若变量不为NULL或空则返回true 

        $target = $_REQUEST[ 'ip' ];       //$_REQUEST[]  获取标签值为ip的里的的内容<input id="ip" type="text">

        // Determine OS and execute the ping command.
        if (stristr(php_uname('s'), 'Windows NT')) {  //stristr()函数贴个例子吧,判断是WINDOWS还是Linux,php_uname() 返回了运行 PHP 的操作系统的描述,'s':操作系统名称。
     
    /*
    <?php
      $email = 'USER@EXAMPLE.com';
      echo stristr($email, 'e'); // 输出 ER@EXAMPLE.com
      echo stristr($email, 'e', true); // 自 PHP 5.3.0 起,输出 US
    ?>
    */
        
            $cmd = shell_exec( 'ping  ' . $target );  //shell_exec()函数执行命令作用呗
            echo '<pre>'.$cmd.'</pre>';
            
        } else {        
        
            $cmd = shell_exec( 'ping  -c 3 ' . $target );  //执行linux命令
            echo '<pre>'.$cmd.'</pre>';
            
        }
        
    }
    ?>
    发现$target直接接收了没有过滤过得值,window 和 linux 下可以直接用&&和;来执行多条命令,所以提交127.0.0.1&&net user做测试


     
    接下来是medium级别的代码
     
    <?php

    if( isset( $_POST[ 'submit'] ) ) {

        $target = $_REQUEST[ 'ip' ];

        // Remove any of the charactars in the array (blacklist).
        $substitutions = array(        //建立php数组 array('key' => 'value')
            '&&' => '',
            ';' => '',
        );

        $target = str_replace( array_keys( $substitutions ), $substitutions, $target );  
    /*array_keys返回数组键名,str_replace(search,replace,subject)三个参数search作为匹配,匹配subject中的字符,若匹配到用replace代替 */
        
        // Determine OS and execute the ping command.
        if (stristr(php_uname('s'), 'Windows NT')) { //判断是不是windows  
        
            $cmd = shell_exec( 'ping  ' . $target );
            echo '<pre>'.$cmd.'</pre>';
            
        } else { 
        
            $cmd = shell_exec( 'ping  -c 3 ' . $target );
            echo '<pre>'.$cmd.'</pre>';
            
        }
    }

    ?>
     
     

    medium里面吧&&和;都过滤了,但是可以尝试提交 1||net user  ||的意思是若前面没有执行成功则执行后面的内容

    =========================================未完待续======================================================

  • 相关阅读:
    CXF整合Spring之JaxWsProxyFactoryBean调用
    js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
    Python hypot() 函数
    Python cos() 函数
    Python atan2() 函数
    Python asin() 函数
    Python atan() 函数
    Python acos() 函数
    Python uniform() 函数
    Python shuffle() 函数
  • 原文地址:https://www.cnblogs.com/elliottc/p/3812734.html
Copyright © 2020-2023  润新知