审计dvwa高难度命令执行漏洞的代码
,编写实例说明如下函数的用法
代码:
<?phpif( isset( $_POST[ 'Submit' ] ) ) {// Get input$target = trim($_REQUEST[ 'ip' ]);// Set blacklist$substitutions = array('&' => '',';' => '','| ' => '','-' => '','$' => '','(' => '',')' => '','`' => '','||' => '',);// Remove any of the charactars in the array (blacklist).$target = str_replace( array_keys( $substitutions ), $substitutions, $target );// Determine OS and execute the ping command.if( stristr( php_uname( 's' ), 'Windows NT' ) ) {// Windows$cmd = shell_exec( 'ping ' . $target );}else {// *nix$cmd = shell_exec( 'ping -c 4 ' . $target );}// Feedback for the end userecho "<pre>{$cmd}</pre>";
}?>
trim
此函数用于删除字符串两侧的空白字符或其他预定义字符。
<?php$username = $_GET['username'];$username = trim($username);echo($username)
?>
接受表单传递过来的用户名,并使用trim() 函数删除其两侧任意的空格。
str_replace
这个函数用于搜索一个字符串并替换与另一个字符串匹配的部分。
<?php$test = "hello world!";$test = str_replace("world", "zs", $test);echo $test; // 输出为:"hello zs!"
?>
使用str_replace() 函数讲“world”替换为“zs”
array_keys
这个函数返回数组中所有键名的一个新数组。
<?php$test = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry');print_r(array_keys($test)); // 输出 Array ( [0] => a [1] => b [2] => c )
?>
使用array_keys()函数获取数组中的所有键名。
stristr
这个函数查找字符串在另一字符串中的第一次出现。
<?php$string = "hello world!";$findme = "world";$pos = strpos($string,$findme);if ($pos === false) {echo "The string '$findme' was not found in the string '$string'";} else {echo "The string '$findme' was found in the string '$string'";}
?>
使用strpos()函数查找"World"是否存在于字符串"Hello, World!"中。
php_uname
这个函数返回关于服务器的信息,如主机名、操作系统名称和版本号等。
<?phpecho php_uname();// 输出 Windows NT WIN-37QPUN7NO81 6.2 build 9200 (Windows Server 2012 Standard Edition) i586
?>
使用php_uname()函数获取服务器信息。