基于github开源项目搭建ctf平台


基于github开源项目搭建

地址连接

(https://github.com/thunderbarca/BlackStone)

需要:

准备一台centos 7的服务器,安装一些需要用到的东西

yum -y install lrzsz (上传文件)

上传压缩包输入rz命令就行。

yum install -y unzip zip (解压zip)

压缩完成。

在BlackStone-main目录下输入source shell/redhat_run.sh 命令

source shell/redhat_run.sh这条shell脚本命令里面的一些关键点。

系统的基本信息

django 框架

Postgresql 13 数据库

前端后端 Layu-imini

shell一键式安装命令,在当前目录输入下面命令。

source shell/redhat_run.sh

source ~/.bashrc

安装完成,启动网站

python3 manage.py runserver 0.0.0.0:8000

如果启动没有仍和出错,能正常拉起系统。

后台登录地址: ip+:8000/back/login

默认的用户名和密码是luffy:shadow

核心点

部署题目到服务器, 需要懂点docker的技术。 docker镜像和容器的概念,制作镜像,与制作容器,容器封装镜像,本地制作镜像容器,远程服务器制作镜像容器。

常用命令
#拉镜像
docker pull [image]
#查看当前镜像
docker images
#新建容器
docker run -d -p [host port]:[docker port] [image]
#查看容器
docker ps -a
#拷贝文件
docker cp [outfile] [container id]:[infile]
#进去容器
docker exec -it [container id] bash
#启动容器
docker start [container id]
#停止容器
docker stop [container id]
#删除容器(注意要关了容器才能删)
docker rm [container id]

搜索原lamp

拉取docker pull tutum/lamp

输入docker images,可以看到有tutu/lamp镜像。

后台题目配置

默认的用户名和密码是luffy:shadow

yum -y install lrzsz

yum install -y unzip zip

source shell/redhat_run.sh

source ~/.bashrc

python3 manage.py runserver 0.0.0.0:8000

docker 一键部署

遇到的问题

docker 镜像部署
docker 容器部署

比赛平台web全部是镜像部署

制作web平台题目

先拉一个原生的镜像
docker search lamp

如果需要权限

chmod +x /usr/local/bin/docker-compose

docker pull tutum/lamp
生成容器

docker run -d -p 30009:80 tutum/lamp (30009容器端口80服务器端口)

用容器的id
进去容器里面设置,默认www在app目录下面
复制服务器上面的文件到容器里面
docker cp /var/www/html/filename container_id:/var/www/html
要对index.php index.html加上 chmod 755 权限

复制完成
docker stop 容器id docker start 容器id

在把生成的新容器封装成镜像

docker commit -a=”yunhe” -m “add web” 13aaa0f4a211 upload:1.0

生成新的镜像后 在生成新的容器
docker run -d -p 30001:80 upload:2.0 (容器的端口号记得做个区分)

docker run -d -p 30002:80 easyphp:2.0

docker run -d -p 30003:80 ap0llo/easy:latest

docker run -d -p 30004:80 ap0llo/transcript:latest

常用命令
#拉镜像
docker pull [image]
#查看当前镜像
docker images
#新建容器
docker run -d -p [host port]:[docker port] [image]
#查看容器
docker ps -a
#拷贝文件
docker cp [outfile] [container id]:[infile]
#进去容器
docker exec -it [container id] bash
#启动容器
docker start [container id]
#停止容器
docker stop [container id]
#删除容器(注意要关了容器才能删)
docker rm [container id]

然后就是服务端挂起

screen的安装
yum install -y screen

[root@pvcent107 ~]# screen -dmS Urumchi
[root@pvcent107 ~]# screen -list
There is a screen on:
        12842.Urumchi   (Detached)
1 Socket i
[root@pvcent107 ~]# screen -r Urumchi

使用 screen 很方便,有以下几个常用选项:

用screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。
用screen -list 来列出所有会话。
用screen -r session name来重新连接指定会话。
用快捷键CTRL-a d 来暂时断开当前会话。

nobup出现的问题
nobup python3 直接杀不掉

ps -aux|grep manage.py | grep -v grep

ps -ef | grep manager.py 或者 ps aux | grep manager.py #查看进程
ps aux | grep manager.py | grep -v grep | awk ‘{print $1}’ | xargs kill -9 #这个表示直接通过command获取进程id并直接kill掉

常用screen参数:

# screen -S docker-d 新建一个名叫docker-d的session,并马上进入
# screen -dmS docker-d 新建一个名叫docker-d的session,但暂不进入,可用于系统启动脚本里
# screen -ls 列出当前所有session
# screen -r docker-d 恢复到zhouxiao这个session,前提是已经是断开状态(-d可以远程断开会话)
# screen -x docker-d 连接到离线模式的会话(多窗口同步演示)
# screen ./rsync.sh screen创建一个执行脚本的单窗口会话,可以attach进程ID
# screen -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业

正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

C-a w 显示所有窗口列表
C-a k 这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。 
C-a d detach,暂时离开当前session

文章作者: yunhea
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yunhea !
评论
评论
  目录