审计dvwa高难度命令执行漏洞的代码

打开dvwa靶场,先把难度调到high,在点击“Command injection”进入命令执行漏洞靶场


 
<?php
 
if( 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 user
    echo "<pre>{$cmd}</pre>";
}
 
?>

trim

函数出现的位置7行

出现在target值的后面,在传ip参数的前面,大胆猜测一下是不是一个过滤在输入ip里怪东西的函数

函数用法

用于删除前后的空格

<?php
$a = trim('   123   ');
echo $a;
?>

可以看到我在代码里打了很多空格,但是运行时没有

str_replace23行

函数出现的位置

出现在第二次给traget赋值的后面、括号前,括号后面用array_key函数去除关键字和替换值组成了个新的值赋给target,大胆猜测这个函数可能是限制这个新产生的值。

函数用法

将 c 位置的 b 内容替换成 a 

<?php
echo str_replace("world")("4684531")("h");
?>

可以看到hello world中的world被替换成了114514

array_keys23行

函数出现的位置

函数用法

返回包含数组中所有键名的一个新数组

<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
?>

大白话话理解是,看到【函数出现位置】那张图这个函数出现的地方上面那个叫【$substitutions】的值了吗,那堆【=>】左边的东西单独拎出来组成一个新的组。

当然这样理解不太好,你能理解加粗的字更好,理解不了就看我写的那个。

stristr

函数出现的位置26行

函数用法

查找 b 在 a 中第一次出现,并且输出剩余字符串

<?php
echo strustr("hellodasda","w000");
?>

大白话理解:找到 a 中第一次出现 b 的地方并且把前面的东西都嘎了,留下第一次出现 b 的地方以及后面的字符

php_uname

函数出现的位置26行

函数用法
返回运行 PHP 的电脑系统的有关信息,‘s’ 为操作系统名称

<?php
echo php_uname(   's'   );
?>

大白话理解:php_uname查你现在用的电脑的系统信息,括号里可以放很多值来查询不同的系统信息,例如,‘s’是查询你的操作系统,'n'查询你的主机名称,‘r’查询你的版本


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值