# Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. FROM ubuntu:22.04@sha256:ac58ff7fe25edc58bdf0067ca99df00014dbd032e2246d30a722fa348fd799a5 as chroot
RUN /usr/sbin/useradd --no-create-home -u 1000 user
RUN DEBIAN_FRONTEND=noninteractive apt-get -y update RUN DEBIAN_FRONTEND=noninteractive apt-get -y install gdb python3
COPY flag.txt /home/user/flag.txt RUN mv /home/user/flag.txt /home/user/`tr -dc A-Za-z0-9 < /dev/urandom | head -c 20`.txt COPY run.sh /home/user/chal COPY gdbinit.sh /home/user/gdbinit COPY main.py /home/user/main.py RUN chmod 555 /home/user/chal
FROM gcr.io/kctf-docker/challenge@sha256:d884e54146b71baf91603d5b73e563eaffc5a42d494b1e32341a5f76363060fb
whileTrue: try: command = input("(gdb) ") ifany([word in command for word in blacklist]): print("Banned word detected!") continue if command.strip().startswith("break") or command.strip().startswith("set") or command.strip().startswith("continue"): try: gdb.execute(command) except gdb.error as e: print(f"Error executing command '{command}': {e}") else: print("Only 'break', 'set', and 'continue' commands are allowed.") except: pass