首页 > 其他分享 >dvwa解题(1)Ping a device

dvwa解题(1)Ping a device

时间:2023-11-27 23:33:37浏览次数:36  
标签:target ping cmd Ping dvwa substitutions 移除 device 操作系统

选择上来先看source

LOW

<?php

// 检查是否提交了表单
if (isset($_POST['Submit'])) {
    // 获取输入的目标 IP 地址
    $target = $_REQUEST['ip'];

    // 确定操作系统并执行 ping 命令
    if (stristr(php_uname('s'), 'Windows NT')) {
        // 如果是 Windows 操作系统
        $cmd = shell_exec('ping ' . $target);
    } else {
        // 如果是类 Unix 操作系统
        $cmd = shell_exec('ping -c 4 ' . $target);
    }

    // 将 ping 命令的输出显示给最终用户
    echo "<pre>{$cmd}</pre>";
}

?>

这个是low等级,可以看到没做过滤,直接加命令

MED

接下来是

med等级

<?php

// 检查是否提交了表单
if (isset($_POST['Submit'])) {
    // 获取输入的目标 IP 地址
    $target = $_REQUEST['ip'];

    // 设置黑名单(用于防止命令注入)
    $substitutions = array(
        '&&' => '',   // 移除 &&
        ';'  => '',   // 移除 ;
    );

    // 从输入中移除黑名单中的任何字符
    $target = str_replace(array_keys($substitutions), $substitutions, $target);

    // 确定操作系统并执行 ping 命令
    if (stristr(php_uname('s'), 'Windows NT')) {
        // 如果是 Windows 操作系统
        $cmd = shell_exec('ping ' . $target);
    } else {
        // 如果是类 Unix 操作系统
        $cmd = shell_exec('ping -c 4 ' . $target);
    }

    // 将 ping 命令的输出显示给最终用户
    echo "<pre>{$cmd}</pre>";
}

?>

可以看到过滤了&&和;

直接用  |  解决

 当然也有

 这个是利用过滤将;删除之后剩余的&&

HIGH

<?php

// 检查是否提交了表单
if (isset($_POST['Submit'])) {
    // 获取输入的目标 IP 地址,并去除首尾的空格
    $target = trim($_REQUEST['ip']);

    // 设置黑名单,定义需要移除的特殊字符
    $substitutions = array(
        '&'  => '',   // 移除 &
        ';'  => '',   // 移除 ;
        '| ' => '',   // 移除 |
        '-'  => '',   // 移除 -
        '$'  => '',   // 移除 $
        '('  => '',   // 移除 (
        ')'  => '',   // 移除 )
        '`'  => '',   // 移除 `
        '||' => '',   // 移除 ||
    );

    // 从输入中移除黑名单中的任何字符
    $target = str_replace(array_keys($substitutions), $substitutions, $target);

    // 确定操作系统并执行 ping 命令
    if (stristr(php_uname('s'), 'Windows NT')) {
        // 如果是 Windows 操作系统
        $cmd = shell_exec('ping ' . $target);
    } else {
        // 如果是类 Unix 操作系统
        $cmd = shell_exec('ping -c 4 ' . $target);
    }

    // 将 ping 命令的输出显示给最终用户
    echo "<pre>{$cmd}</pre>";
}

?>

对IP进行了很细致的过滤,但是只要是过滤就得出现绕过

这里的代码发现有

'| '

会修改|加空格,那么只要我们命令里没用空格就可以解决

 还有“ | | ”这里有空格也可以绕过

 

PHP是世界上最好的语言

<?php

// 检查是否提交了表单
if (isset($_POST['Submit'])) {
    // 检查 Anti-CSRF 令牌
    checkToken($_REQUEST['user_token'], $_SESSION['session_token'], 'index.php');

    // 获取输入
    $target = $_REQUEST['ip'];
    $target = stripslashes($target);

    // 将 IP 拆分成 4 个八位
    $octet = explode(".", $target);

    // 检查每个八位是否为整数
    if (
        (is_numeric($octet[0])) &&
        (is_numeric($octet[1])) &&
        (is_numeric($octet[2])) &&
        (is_numeric($octet[3])) &&
        (sizeof($octet) == 4)
    ) {
        // 如果所有 4 个八位都是整数,重新组合 IP
        $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];

        // 确定操作系统并执行 ping 命令
        if (stristr(php_uname('s'), 'Windows NT')) {
            // Windows
            $cmd = shell_exec('ping ' . $target);
        } else {
            // *nix
            $cmd = shell_exec('ping -c 4 ' . $target);
        }

        // 反馈给最终用户
        echo "<pre>{$cmd}</pre>";
    } else {
        // 操作失败。告知用户有错误
        echo '<pre>ERROR: You have entered an invalid IP.</pre>';
    }
}

// 生成 Anti-CSRF 令牌
generateSessionToken();

?>

 

标签:target,ping,cmd,Ping,dvwa,substitutions,移除,device,操作系统
From: https://www.cnblogs.com/nish1hundun/p/17858211.html

相关文章

  • Jmeter - Stepping Thread Group
    目录安装参数详解结果分析安装1.下载Jmeter包管理工具:https://www.cnblogs.com/czzz/p/15932826.html2.使用插件参数详解Thisgroupwillstart:表示总共要启动的线程数,若设置为100,表示总共会加载到100个线程First,waitfor:从运行之后多长时间开始启动线程,若设置为0秒......
  • DEVICENET 从站转 MODBUS-TCP 网关操作案例
    兴达易控DEVICENET从站转MODBUS-TCP网关操作案例兴达易控DEVICENET从站转MODBUS-TCP网关(XD-ETHDE20)是一款DEVICENET从站功能的通讯网关。该产品主要功能是将DEVICENET总线和MODBUS-TCP网络连接起来。兴达易控DEVICENET从站转MODBUS-TCP网关连接到DEVICENET总......
  • DPU Grouping
    题意给定\(n\)个物品,任意分组,\(i\)与\(j\)物品在同一组贡献为\(a_{i,j}\)。求最大贡献。\(n\le16\)。Sol考虑状压\(f_i\)表示\(i\)集合的最大贡献。注意到枚举最后一个选的数不好转移,考虑用一个集合转移到另一个集合。子集枚举即可。复杂度\(3^n\)。Code#i......
  • VS2022下nuget包同步失败,提示: PackageSourceMapping 已启用,未考虑以下源: **
    随着Net8的发布,顺带VS2022升级到17.8后,发现nuget还原恢复多了一些配置: 有问题的时候,会提示未找到映射源,此时编译会报错,如下示例: 严重性代码说明项目文件行禁止显示状态错误NU1100无法解析net7.0-android33.0的“HarfBuzzSharp.NativeAssets.Linux(>=2.8.2.3)”......
  • 如何定义Sping上传文件的接口
    我直接通过拓云智能AI搜索获得了如下的答案。避免了花费太长时间也找不到直接答案。--现在百度广告太多了...在Spring中,通过定义Controll层,来实现接口,上传文件比较特殊,需要注意的点:可以使用@PostMapping注解来定义上传音频文件的接口使用MultipartFile类来接受前端上传......
  • Linux:ping、curl、telnet作用异同
    学习自:Linu网络判断指令ping、curl、telnet的区别与应用场景_ping和curl的区别_饮风丶欤的博客-CSDN博客telnet和curl和ping的区别_curl和telnet的区别-CSDN博客1、curl在Linux中curl是一个利用URL规则在命令行中工作的文件传输工具,是一个http命令行工具,可以帮助我们在服务......
  • unseping
    [来源:江苏工匠杯-难度1考点:简单的php反序列化00前置芝士:反序列化漏洞1.什么是序列化?(serialize)看不懂了,唉,简单来说就是将我们熟知能够看得懂的对象转化我们看不太懂的字符串,,,,例如这样的O:4:"ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:......
  • 使用MediaDevices接口实现录屏技术
    摘要:本文将介绍如何使用JavaScript的MediaDevices接口实现录屏功能。我们将通过WebRTC技术捕获用户的屏幕或摄像头画面,并将其编码为MP4视频文件。在线录屏是指在互联网上进行屏幕录制的过程。它允许用户通过网络连接,将自己的屏幕活动记录下来,并可以在需要时进行播放、共享或存档......
  • kubernetes container device interface (CDI)
    CDI是什么?ContainerDeviceInterface(CDI)是一个提议的标准,它定义了如何在容器运行时环境中向容器提供设备。这个提议的目的是使得设备供应商能够更容易地将其设备集成到Kubernetes集群中,而不必修改Kubernetes核心代码。CDI插件通常负责:配置设备以供容器使用(例如,分配......
  • es定制 dynamic mapping template(type)
    定制dynamicmappingtemplate(type)PUT/my_index{"mappings":{"my_type":{"dynamic_templates":[{"en":{"match":"*_en","match_mapping_type":"string","mapping&quo......