docker 快速入门
docker 在线实验

image.png
image.png

安装

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh –mirror Aliyun

基本操作

启动
systemctl start docker

守护进程重启
systemctl daemon-reload

重启 docker 服务
systemctl restart docker / service docker restart

关闭
docker service docker stop / docker systemctl stop docker

运行一个容器,命名为 yichen
docker run -d -p 10001:80 --name yichen apacje

挂载目录
-v /root/:/root/

进入容器里面,开一个 bash
docker exec -it id /bin/bash

重启容器
docker restart id

关闭容器
docker stop id

删除容器
docker rm -f id

通过提交一个镜像
docker commit id yichen

把镜像提交到 dockerhub 上
docker login (登录)
docker push 镜像名

把镜像上传到阿里云的容器镜像仓库

先创建一个命名空间,在创建一个仓库(代码源选本地)
docker login –username=阿里云用户名 registry.cn-shanghai.aliyuncs.com
密码可以在这里设置

image.png
image.png

docker tag 镜像 id registry.cn-shanghai.aliyuncs.com/命名空间/你的仓库名
docker push registry.cn-shanghai.aliyuncs.com/命名空间/你的仓库名

查看运行的 docker
docker ps

重命名一下
docker rename 原容器名 新容器名

搭建 web 环境

拉取一个 apache-php5
docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

运行
docker run -d -p 2027:80 registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

把题目复制到/var/www 目录下面
docker cp ./web2 0c7b9ddc107a:/var/www

出现这些问题使用 chmod 777 文件名 给权限

Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Fatal error: Unknown: Failed opening required ‘/var/www/index.php’ (include_path=’.:/usr/local/lib/php’) in Unknown on line 0

搭建 pwn 环境

这样可以在实体机单个匹配一条命令
socat tcp-l:8887,fork exec:./pwn1

把 xinetd 下下来 ~https://github.com/Eadom/ctf_xinetd
题目复制到 bin 文件夹,把 ctf.xinetd 的命令改成运行的
(之前是 ./helloworld,改成自己的文件名)
xinetd 里面 Dockerfile 里面的清华的源不行,换成阿里的

打开,把 pub_port 改成想要的端口
~~docker run -d -p "0.0.0.0:pub_port:9999" -h "helloworld" --name="helloworld" helloworld~~

有个更好的方法:

把文件下载下来
git clone https://github.com/giantbranch/pwn_deploy_chroot.git

然后把所有题目直接改好名字,放在 bin 文件夹
运行 python initialize.py 分配好 flag,会把分配的 flag 放在 flags.txt
运行 docker-compose up --build -d

同时每个题目对应的端口也会放在 flags.txt

改 config.py 这个选项为 True 可以使用 cat flag 代替 /bin/sh 提高安全性

1
2
# Whether to replace /bin/sh
REPLACE_BINSH = False

复现环境

安装 docker-compose
sudo apt install docker-compose

拉起环境
docker-compose up -d
docker-compose.yml 中查看端口,访问即可

出现 AttributeError: ‘module’ object has no attribute ‘SSL_ST_INIT’问题:
解决:
rm -rf /usr/lib/python2.7/dist-packages/OpenSSL
rm -rf /usr/lib/python2.7/dist-packages/pyOpenSSL-0.15.1.egg-info
sudo pip install pyopenssl