【靶场训练_DVWA】Command Execution

low

利用:

;ls ../../

 

 

 源码分析:

<?php

if( isset( $_POST[ 'submit' ] ) ) 
{
    //将ip对应的值复制给target
    $target = $_REQUEST[ 'ip' ];
    
    if (stristr(php_uname('s'), 'Windows NT')) 
    { 
        //如果是winds就直接ping
    
        $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    } 
    else 
    { 
        //如果是Linux就默认ping 3个包
        $cmd = shell_exec( 'ping  -c 3 ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    }
    
}
?>
  • $_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢。通过post和get方法提交的所有数据都可以通过$_REQUEST数组获得
  • php_uname — 返回运行 PHP 的系统的有关信息
  • stristr() 函数搜索字符串在另一字符串中的第一次出现
  • php_uname('s'):返回操作系统名称

 

Medium

利用:

|| 或者  &;& 或者 &

 

源码分析:

 就多了一点过滤,但是没过滤完整

<?php

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

    $target = $_REQUEST[ 'ip' ];

    // 过滤了 &&,;命令分割符
    $substitutions = array(
        '&&' => '',
        ';' => '',
    );

    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
    
    // Determine OS and execute the ping command.
    if (stristr(php_uname('s'), 'Windows NT')) { 
    
        $cmd = shell_exec( 'ping  ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    } else { 
    
        $cmd = shell_exec( 'ping  -c 3 ' . $target );
        echo '<pre>'.$cmd.'</pre>';
        
    }
}

?>

High

无能为力了Orz,只有诸如“数字.数字.数字.数字”的输入才会被接收执行.

<?php

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

    $target = $_REQUEST["ip"];
    
    /*
        stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
     */
    
    $target = stripslashes( $target );
    
    
    // Split the IP into 4 octects
    $octet = explode(".", $target);
    
    // Check IF each octet is an integer
    if ((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric($octet[2])) && (is_numeric($octet[3])) && (sizeof($octet) == 4)  ) 
    {
    
    // If all 4 octets are int's put the IP back together.
    $target = $octet[0].'.'.$octet[1].'.'.$octet[2].'.'.$octet[3];
    
    
        // Determine OS and execute the ping command.
        if (stristr(php_uname('s'), 'Windows NT')) 
        { 
    
            $cmd = shell_exec( 'ping  ' . $target );
            echo '<pre>'.$cmd.'</pre>';
        
        } 
        else 
        { 
    
            $cmd = shell_exec( 'ping  -c 3 ' . $target );
            echo '<pre>'.$cmd.'</pre>';
        
        }
    
    }
    else
    {
        echo '<pre>ERROR: You have entered an invalid IP</pre>';
    }
    
}

?>

 

posted @ 2019-09-13 21:57  东坡肉肉君  阅读(665)  评论(0编辑  收藏  举报