Dvwa命令执行:

低难度:

页面提示为ping设备,直接填入本机测试IP查看返回结果为正常icmp测试

联合逻辑符号&带入其他命令查看可以执行,此处带入的是ip查看命令

测试命令为127.0.0.1 & ipconfig

 

源码分析:

 

php_uname()返回的是php运行环境的系统信息s选项是操作系统名称

Stristr()是检索字符串首次出现的位置并返回剩余内容

中难度:

        源码分析:

 

array_keys()用法是提取参数的键组成新的数组

str_replace()作用匹配字符串后作替换处理,可以过滤定义在数组的&&和;命令

通关思路和低难度一样用未过滤的字符&执行后续命令

高难度:

        先分析源码:

 和中难度一样的过滤方法,过滤的内容增加了尝试双写执行||||带入执行成功

最高难度:

        此处未完成仅仅作分析

        源码分析如下

    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );        传入token
    $target = $_REQUEST[ 'ip' ];            接收IP
    $target = stripslashes( $target );        删除’\‘
    $octet = explode( ".", $target );        以.分割生成新字符串数组
    if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) )
    is_numeric检查是否是数字字符串    sizeof检查数组元素的数目
{ $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];    拼接重新构造IP
 if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
                     $cmd = shell_exec( 'ping  ' . $target );
        }
        else {
                      $cmd = shell_exec( 'ping  -c 4 ' . $target );
        }
                echo "<pre>{$cmd}</pre>";
    }
    else {
               echo '<pre>ERROR: You have entered an invalid IP.</pre>';
    }
}
generateSessionToken();
?>

更多推荐