DVWA之Command Injection通关(低中高)
低等级
先看源码
<?php
// 检查是否提交了表单
if( isset( $_POST[ 'Submit' ] ) ) {
// 获取用户输入的IP地址或域名
$target = $_REQUEST[ 'ip' ];
// 检查操作系统类型并执行相应的ping命令
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// 如果是Windows操作系统
// 使用shell_exec函数执行ping命令
$cmd = shell_exec( 'ping ' . $target );
}
else {
// 如果是类Unix操作系统(例如Linux、macOS)
// 使用shell_exec函数执行ping命令,-c 4表示发送4个ping包
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// 将命令的输出结果返回给用户并在页面上显示
echo "<pre>{$cmd}</pre>";
}
?>
源码表示就是在输入的ip地址前拼接一个ping后作为命令执行,同时没有任何过滤
中等级
源代码多了限制
但是过滤的不全依旧可以
High等级
看下源代码发现过滤的很全面
1 高级扩充了黑名单,有更全面的过滤,但是可以发现'| ' => ''是对管道符+空格进行的匹配,而不是管道符,所以可以使用|来绕过,或者直接使用管道符
而且注意刚才的过滤那个|后面有个空格,所以!!!!!