实战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  ||的意思是若前面没有执行成功则执行后面的内容

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

posted @ 2014-06-27 21:57  elliottc  阅读(516)  评论(0编辑  收藏  举报