利用ctf_xinetd部署pwn题目的一些细节
PaT1Ent 发表于 山东 CTF 1120浏览 · 2024-05-15 13:02

利用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题目的远程环境,从而达到出题或者练习的目的

0 条评论
某人
表情
可输入 255