先来查看一下dvwa中命令执行漏洞源码:
<?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST[ 'ip' ];//对输入没有任何过滤
// 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 );//linux系统ping3次·
echo '<pre>'.$cmd.'</pre>';
}
}
?>
stristr() 函数搜索字符串在另一字符串中的第一次出现。
php_uname() 返回了运行 PHP 的操作系统的描述。php_uname(‘s’)返回操作系统名称。
shell_exec():通过shell执行命令并将完整输出作为字符串返回。
exec():执行外部命令,可以传递一个可选变量,用于接收一组输出行。
命令执行漏洞利用原理:
无论是windows系统还是linux系统都可以通过&&执行多条命令。
连接符的使用:
command1 && command