1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
# Some additional debugging tools that are useful
RUN python2.7 -m pip install --no-cache-dir ipdb && \
python3 -m pip install --no-cache-dir ipdb
# Install debugging utilities
USER root
RUN apt-get -y install gdb gdbserver tmux gdb-multiarch
# Set up binfmt-misc mappings inside the VM
USER root
RUN mkdir /etc/qemu-binfmt && \
ln -sf /usr/lib/arm-linux-gnueabihf /etc/qemu-binfmt/arm && \
ln -sf /usr/lib/aarch64-linux-gnu /etc/qemu-binfmt/aarch64 && \
ln -sf /usr/lib/mips-linux-gnu /etc/qemu-binfmt/mips && \
ln -sf /usr/lib/mipsel-linux-gnu /etc/qemu-binfmt/mipsel && \
ln -sf /usr/lib/powerpc-linux-gnu /etc/qemu-binfmt/powerpc && \
ln -sf /usr/lib/powerpc-linux-gnu64 /etc/qemu-binfmt/powerpc64 && \
ln -sf /usr/lib/sparc64-linux-gnu /etc/qemu-binfmt/sparc64 && \
ln -sf /usr/lib/riscv64-linux-gnu /etc/qemu-binfmt/riscv64
# Create the Travis user
USER root
RUN useradd -m travis
RUN echo "travis ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/travis
# Set up SSH stuff so we can SSH into localhost
USER pwntools
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' && \
cp ~/.ssh/id_rsa.pub /tmp && \
echo \
"Host *\n\
User travis\n\
HostName 127.0.0.1\n\
"> ~/.ssh/config
# Set up authorized_keys so we can login as travis with no creds
USER travis
RUN mkdir -m 0700 ~/.ssh && \
echo 'from="127.0.0.1"' $(cat /tmp/id_rsa.pub) > ~/.ssh/authorized_keys
# Add the doctest entrypoint to /usr/bin so we don't have to supply the full path
USER root
ADD doctest2 doctest3 /usr/bin
# Switch back to pwntools to actually run the image
USER pwntools
WORKDIR /home/pwntools
# Copy in the Doctest script
COPY doctest2 doctest3 tmux.sh /home/pwntools
# Do everything in UTF-8 mode!
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV SHELL=/bin/bash
# Set entry point to doctest by default
WORKDIR /home/pwntools
|