前言
在13号有一个校内赛CTF,目前我们战队的情况是比较尴尬的,没有pwn手了,我这一届,底下一届连续两届都没有。只能寄希望于这届新生了。另一方面是Re确实不太好走,技术嘛,还是越走越宽才好。所以,弄一个pwn题的靶场环境是很有必要的。
0x00 靶场环境安装
准备Linux的系统环境,这里我用的是Ubuntu(阿里云的服务器)
- 安装docker:
sudo apt install docker.io
- 安装docker compose和git:
sudo apt install docker-compose git
- 安装pwn_deploy_chroot:
git clone https://github.com/giantbranch/pwn_deploy_chroot.git
这里我也是参考了很多大佬的博客,不使用xinted + docker的方案,因为这个方案比较繁琐,而且配置麻烦。这里采用了giantbranch大佬的配置方案。该方案支持一键配置多道,环境一键搭建,使用catflag程序代替/bin/sh
,更安全。
0x01 使用方法
- 将生成的pwn文件放在./bin文件夹下(名字不能有特殊符号)
python initialize.py
生成flags.txt文件(默认为flag{uuid})- 报错没有flags.txt文件就vim创建
- initialize.py貌似是python2的文件,我用的python3,修改了
print()
和xrange
为range
- 生成后可再次打开flags.txt文件编辑端口,flag等,再次运行生成命令即可
- 用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>
其他的暂时没用到