虚拟化

  • wine、wsl:兼容层
  • qumu、kvm、qemu-kvm
    • 内核编译运行调试(qemu)、企业级

安装Docker

PWN题目部署

xinetd部署pwn题

下载ctf_xinetd

  • 先使用git命令,将ctf_xinetd从github上克隆下来
1
git clone https://github.com/Eadom/ctf_xinetd
  • 下载好后,在Ubuntu下的根目录,就会出现ctf_xinetd文件

image-20240321235356222

配置ctf_xinetd

  • 进入到ctf_xinetd文件里面去,会发现下面三个红色框的文件,这三个是需要进行配置的文件

image-20240321235622875

  1. 配置bin文件
  • 进入bin文件后,查看bin文件目录,会发现有俩个,一个是flag,一个是ret2text

image-20240321235752098

  • flag里面存放的就是flag,可以根据你设定的flag,进入里面修改flag.

image-20240322000042292

  • ret2text(一开始是helloworld,这里被我改过了)就是pwn的题目了,如果要部署题目,就把ret2text删除,将题目文件移动到该目录下

  • 本人使用的是wsl,可以直接在Windows下移动文件,比较方便

  • 将文件移动到该目录下后,就在该目录下对文件进行提权

1
chmod 750 ret2text 

image-20240322000444059

  1. 配置ctf.xinetd
  • 先进入ctf.xinetd文档

image-20240322000731770

  • 将port该为80端口
  • 将./ret2text该为你的程序名**(./保留)**

image-20240322000826379

  1. 编辑Dockerfile

image-20240322001024046

  • 将下面红框部分改为80

image-20240322001120857

创建容器

  • 接下来使用docker创建题目的镜像
  • 注意下面的命令结尾个空格加一个点
1
docker build -t "ret2text" .

image-20240322001411167

  • 接下来利用该镜像启用一个容器
  • 这里的ret2text更改成之前放置pwn程序的程序名,8110可以换成一个没有在使用的端口。
1
docker run -d -p "0.0.0.0:8110:80" -h "ret2text" --name"ret2text" ret2text
  • 启动成功后可以使用docker ps命令查看容器

image-20240322002319911

检查是否部署成功

  • nc一下,看一看程序是否能正常运行起来。(看来没问题)

image-20240322002452934

  • 使用exp打一下,如果能成功得到flag,那就说明没有问。这里建议先用,刚从仓库拉取下来,ctf_xinetd自带的helloworld程序试一下。
  • 这里为了更好的演示我就换成了helloworld
  • 下图表面可以得到flag,说明题目部署的有效

image-20240322003406784