Beautiful and powerful terminal Docker environment for Pwn in CTF! Fuck the environment setup that's why this repo created.
I created this just for myself. It is my very first time making an image.
If you wish, you can modify it on your own, or open an issue to suggest how should I improve it. (Or simply open a PR!)
- zsh
- oh-my-zsh
- starship
- pwntools —— CTF framework and exploit development library
- gef
- pwndbg —— a GDB plug-in that makes debugging with GDB suck less, with a focus on features needed by low-level software developers, hardware hackers, reverse-engineers and exploit developers
- pwngdb —— gdb for pwn
- ROPgadget —— facilitate ROP exploitation tool
- roputils —— A Return-oriented Programming toolkit
- one_gadget —— A searching one-gadget of execve('/bin/sh', NULL, NULL) tool for amd64 and i386
- angr —— A platform-agnostic binary analysis framework
- seccomp-tools —— Provide powerful tools for seccomp analysis
- tmux —— a terminal multiplexer
- ltrace —— trace library function call
- strace —— trace system call
Easiest Way
git clone https://github.com/Nova-Noir/NoPwnDocker
cd NoPwnDocker
sudo docker compose up -d
sudo docker exec -it ub18 /bin/zsh
Recommended Way
git clone https://github.com/Nova-Noir/NoPwnDocker
cd NoPwnDocker
export ctf_name="<FOLDER_NAME>"
docker build . -t nopwndocker:ubuntu18.04
docker run -it \
-h ${ctf_name} \
--name ${ctf_name} \
-v $(pwd)/${ctf_name}:/ctf/ \
--cap-add=SYS_PTRACE \
nopwndocker:ubuntu18.04
There's not much can be modified. But you do can change something.
- open
Dockerfile
, you can change the version and proxy. - open
docker-compose.yml
, you can change the container name. - modify
starship.toml
to use your own starship style. - modify
.gdbinit
to use your own gdbinit config.
init-gef
、init-pwndbg
to load different gdb plugin.
zsh-syntax-highlighting
and zsh-autosuggestions
plugins
A shell file to build glibc source with debug in one command.
bash ~/build_glibc.sh -h
There could be some bug when building older version of glibc. Check below to see the solution. (at least for me)
see https://patchwork.ozlabs.org/project/glibc/patch/20170623161158.GA5384@gmail.com/
Maybe never. Or once I come up with some useful utilities in Pwn.
🔥 Remove build_glibc32.sh
and build_glibc64.sh
, add build_glibc.sh
for general usage.
:fire: Remove built-in glibc to reduce the docker size and build time.