前言

在13号有一个校内赛CTF,目前我们战队的情况是比较尴尬的,没有pwn手了,我这一届,底下一届连续两届都没有。只能寄希望于这届新生了。另一方面是Re确实不太好走,技术嘛,还是越走越宽才好。所以,弄一个pwn题的靶场环境是很有必要的。


0x00 靶场环境安装

准备Linux的系统环境,这里我用的是Ubuntu(阿里云的服务器)

  1. 安装docker: sudo apt install docker.io
  2. 安装docker compose和git: sudo apt install docker-compose git
  3. 安装pwn_deploy_chroot: git clone https://github.com/giantbranch/pwn_deploy_chroot.git

这里我也是参考了很多大佬的博客,不使用xinted + docker的方案,因为这个方案比较繁琐,而且配置麻烦。这里采用了giantbranch大佬的配置方案。该方案支持一键配置多道,环境一键搭建,使用catflag程序代替/bin/sh,更安全。

0x01 使用方法

  1. 将生成的pwn文件放在./bin文件夹下(名字不能有特殊符号)
  2. python initialize.py 生成flags.txt文件(默认为flag{uuid})
    • 报错没有flags.txt文件就vim创建
    • initialize.py貌似是python2的文件,我用的python3,修改了print()xrangerange
    • 生成后可再次打开flags.txt文件编辑端口,flag等,再次运行生成命令即可
  3. 用root用户启动docker-compose up --build -d

到这里就配置并部署好了靶场,剩下的就是把你的端口监听打开就行了。关于更多的信息可以看目录下README文件

0x02 解题环境

安装pwntools:pip install pwntools

这是python的库,比较强大,而且好用。

0x03 其他

docker命令

如果报错记得root权限运行

1、查看已容器

docker ps

2、查看全部容器

docker ps -a

3、启动已被停止的容器myrunoob

docker start myrunoob/CONTAINER ID

4、停止运行中的容器myrunoob

docker stop myrunoob/CONTAINER ID

5、重启容器myrunoob

docker restart myrunoob/CONTAINER ID

6、删除容器

docker rm <CONTAINER ID>

7、删除镜像

docker rmi <id|name>

其他的暂时没用到