DVWA ping IP high 难度代码审计

首先进入dvwa

初始账号 admin

初始密码 password

也可以用密码爆破得出密码

将密码难度设置为high

用 ip 127.0.0.1 进行命令注入,发现不能执行,检查源代码

进入high的代码

代码解释

这是ping ip地址中 high  的代码

<?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>";
}

 $target = trim($_REQUEST[ 'ip' ]);   //trim 去除 填写的“ip”首尾处的空白字符 

$substitutions = array(
        '&'  => '',
        ';'  => '',
        '| ' => '',
        '-'  => '',
        '$'  => '',
        '('  => '',
        ')'  => '',
        '`'  => '',
        '||' => '',

将敏感字符写入到一个数组

 $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

str_replace  替换字符  将$target函数中  array_keys( $substitutions ) 中的键名替换

stristr 忽略函数大小写版本      

注意:因为Windows  系统不区分大小写,所以用stristr 来输出  

  stristr( php_uname( 's' ), 'Windows NT' )  这个代码的意思是匹配主机信息  将匹配的信息与Windows NT 做比对 ,如果成功则执行下面的语句,不成功则执行else语句  (这里的s指特定查询主机名称   )

 $cmd = shell_exec( 'ping  ' . $target )    这个命令执行ping命令

代码分析

  • 设置了黑名单,&,;,|+,-,(,),[反引号],||

  • 黑名单中漏掉了关键字符|。 可以用|来进行执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值