利用ctf_xinetd部署pwn题目的一些细节
前置知识
安装docker-compose
sudo apt-get install docker docker-compose
sudo docker ps -a
docker命令前面最好加sudo,不然容易报错
docker命令前面最好加sudo,不然容易报错
下载
git clone https://github.com/Eadom/ctf_xinetd.git
使用
将编译好的pwn附件和libc,放入此文件夹的bin目录中,并且把flag改成我们写的内容
然后修改ctf.xinetd文件
这里的名字改成bin文件夹里面放入的附件的名字,如果这里不想更改,只需要把pwn附件的名称命名为pwn即可
然后在ctf_xinetd目录下创建镜像
sudo docker build -t "pwn" .
这里的pwn是镜像的文件名
可以用sudo docker images去查看
然后如果创建的时候报错,是因为ubuntu的版本高于了18,
所以要去掉Dockerfile下面那一行,然后上面改成对应的版本
高于ubuntu18的就这样操作就可以
然后在这个目录下运行
sudo docker run -d -p "127.0.0.1:8888:9999" -h "pwn" --name="pwn" pwn
-p 后面就是服务器私有的ip -h是容器的hostname 最后的pwn是image的名字
这时候也要把服务器的端口打开
然后就可以用公共ip和端口去连接题目了
版本问题
在做pwn的相关题目时,版本问题相当重要,因为不同版本的偏移大概率是不一样的
我本地的ubuntu20是2.31-0ubuntu9.15版本的,所以用gcc去编译一个pwn题目,在本地需要用9.15的版本去打通
当我们在服务器上部署ubuntu20版本的题目,通过题目的测试,基本上可以确定远程题目的libc版本是2.31-0ubuntu9.9
所以远程获得shell就需要使用2.31-0ubuntu9.9的libc
同理ubuntu22的远程版本是2.35-0ubuntu3.6
所以需要使用2.35-0ubuntu3.6版本的libc去提权
总结
通过以上操作,就可以在自己的轻量服务器上面部署好pwn题目的远程环境,从而达到出题或者练习的目的