php+nginx

ctf题目制作手册

一、制作题目

制作ctf题目前置条件:CentOS7,需要安装有docker服务

制作test1压缩包下的题目1:

1、明确题目要求,题目要求如下:

2、docker hub寻找合适的镜像:

(注意:寻找镜像时,不找无run启动命令的镜像)

无特殊要求,开始制作镜像。

首先根据题目要求从docker hub上寻找对应的镜像,该题目需要php镜像,需要php运行服务器,一般而言使用apache。

如图所示镜像是根据寻找找到的可用镜像

3、docker服务器下载镜像

如图所示,通过docker pull命令下载镜像

4、查看镜像 docker images

5、启动镜像 docker run -tid 镜像名:版本号(如果TAG为latest,则不用加版本号)

6、查找镜像对应的端口 docker ps

7、根据镜像对应的端口启动镜像

docker run -tid -p XX:XX 镜像名:版本号

(前边的XX代表虚拟机的端口,后面的XX代表容器的端口,容器的端口是通过刚刚找到的)

8、无特殊题目制作要求的情况下,将题目文件上传到对应的docker容器中

分三步进行,第一步:将题目文件上传到linux服务器中

第二步:找到docker容器进入的目录位置:

docker exec -it 容器id /bin/bash

(默认进入容器内部的命令为/bin/bash或者是/bin/sh)

然后pwd查看当前路径

第三步:将linux文件上传到docker容器对应的目录中:

docker cp 文件名 容器id:容器目录

9、打开浏览器访问

ip地址加端口(linux服务器ip+启动命令设置的linux虚拟机端口)

发现文件乱码如何解决

10、解决文件乱码问题:

分以下几步:

第一步,进入docker容器内部,删除docker 容器文件

第二步,删除宿主机上的文件

第三步,创建一个新文件,直接复制题目内容到新文件中,退出保存

第四步:将文件上传至docker 容器内部(和第8条第三步一样)

docker cp 文件名 容器id:容器目录

第五步:浏览器访问

11、把容器做成镜像,

docker commit 容器id 镜像名称

12、将镜像打成tar包

docker save -o XX.tar 镜像名:版本号

(XX为打包出来的文件名)

题目制作成功,tar包可用

13、tar包加载为镜像

下次使用时:将tar文件上传至服务器,加载镜像即可

docker load --input XXX.tar

二:CTF web题目权限问题

1. 根据制作的题目镜像启动容器

docker run -tid --name {container_name} -p {host_port}:{container_port} {image_id}/{image_name}:{tag}

2. 进入容器内部查看权限

docker exec -it {container_id} /bin/bash

3. 查看当前用户的权限

ps -a

nginx和php-fpm的主进程(master process)为root用户权限;下方的nginx权限为nginx用户的权限,php-fpm权限为root用户的权限。当php进程的权限为root用户时,做题的人可以通过该权限直接对题目本身(容器)进行随意破坏,这样不行,需要修改php普通用户的权限。

4. 修改用户权限

cd /usr/local/etc

ls

vi php-fpm.conf

将文件内容修改为以下图片所示,修改user=root为user=www-data,修改listen.owner=root为listen.owner=www-data。

ps -a查看权限,配置完成之后,查看配置并未生效,需要对php重启使配置生效

supervisorctl status查看docker容器当前运行的应用

supervisorctl stop php 停止

supervisorctl start php 开启

效果等同于重启

supervisorctl restart php 重启

再次通过ps -a查看当前进程权限

用户权限已经改好了

5. 修改上传文件权限

在通过docker exec -it {container_id} /bin/bash进入容器内部的默认路径下执行

ls

mkdir upload

ls -al

新建的upload文件夹的权限为root:root(权限为root:root时,普通用户无法对文件夹进行写入,没有root权限,需要修改为普通用户也能访问)

chown [-R] 账号名称:用户组名称 文件或目录

chown www-data:www-data upload/

ls -al 查看权限的时候能看到upload文件夹权限用户以及用户组都变成了www-data www-data

用户上传文件夹权限已经修改完毕,可以让用户上传文件。

6. 把容器做成镜像

docker commit {container_id} {image_name}:{tag}

7. 将镜像打成tar包

docker save -o XX.tar {image_name}:{tag}

8. tar包加载为镜像

下次使用时:将tar文件上传至服务器,加载镜像即可

docker load --input XXX.tar

原文地址:https://www.cnblogs.com/longchengruoxi/p/11743631.html

时间: 2024-10-13 04:59:34

php+nginx的相关文章

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

shell 格式化输出nginx的编译参数

命令 nginx -V > nginx.txt cat -n nginx.txt  | sed -n '5,18p' | awk '{$1="";print $0}'  | sed 's/^[ ]*//g'  | tr '\n' ',' | sed -n 's/,//gp' | tr " " "\n" 结果 configure arguments: --user=nginx --group=nginx --prefix=/usr/share

Nginx 反代参数:$X-Real-Ip和$X-Forwarded-For的区别

## \$X-Real-Ip和$X-Forwarded-For的区别 标签(空格分隔): nignx 负载均衡 client-ip --- ####1.如果只有一层代理,这两个头的值就是一样的####2.多层代理> * X-Forwarded-For:  header包含这样一行        `*X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3*`> * X-Real-Ip:没有相关标准,上面的例子,如果配置了X-Read-IP,可能会有两种情况`// 最

Nginx为什么比Apache Httpd高效:原理篇

一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线程才是基本的运作单位,而进程只是线程的容器.程序 本身只是指令.数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例.若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循 序)或异步(平行)的方式独立运行.现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借

linux 安装与启动nginx

linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -zxvf nginx-1.8.0.tar.gz 三.进入nginx-1.8.0/文件夹,设置一下配置信息 ./configure --prefix=/usr/local/nginx(安装后的文件存放路径). 四.配置的时候可能会出现类似这样的信息 ./configure: error: the HTT

linux运维、架构之路-Nginx提高

一.虚拟主机搭建 1.基于域名的虚拟主机 [[email protected] html]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name

linux自学笔记--nginx基本配置

1.基本配置 worker_processes auto|3; 指定使用的核数,默认auto,也可指定  一般为自身核数-1,可用lscpu查看 events { worker_connections 1024; 最大并发连接数,最大并发响应  数 worker_processes * worker_connections } http { keepalived_timeout 65 0表示禁止长连接 keepalived_request 长连接最大资源数,默认100 keepalived_di

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

Saltstack批量编译部署nginx(多模块)

最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环境使用,这就需要用到saltstack的批量安装部署功能了.这篇文章主要介绍nginx的批量部署,下篇讲解tomcat多实例的批量部署方法. 环境介绍: Centos 6.5 salt 2015.5.10 nginx 1.12.0 minion:test 1.修改master配置文件,修改后重启服务

FastDFS+Nginx问题及修复

FastDFS+nginx问题及修复:     1.[error] 30000#0: *1 open() "/usr/local/nginx/html/group1/M00/00 /00/wKgAA1cLh12AI0kfAAAADzbdjmQ50_big.html           "failed (2: No such file or directory), client: 192.168.0.181, server:localhost, request:            &