diff --git a/snake-safe/Dockerfile b/snake-safe/Dockerfile new file mode 100644 index 0000000..e27c062 --- /dev/null +++ b/snake-safe/Dockerfile @@ -0,0 +1,6 @@ +FROM ubuntu:20.04 +RUN apt-get update && apt-get install -y python3 python3-pip +RUN pip3 install pyinstaller +COPY safe.py ./safe.py +RUN pyinstaller -F ./safe.py +CMD ["sleep", "10000"] diff --git a/snake-safe/README.md b/snake-safe/README.md new file mode 100644 index 0000000..753919e --- /dev/null +++ b/snake-safe/README.md @@ -0,0 +1,11 @@ +# snake-safe +## Text +I don’t trust those fancy password managers. They’re just waiting to steal your data and sell it to the Illuminati or something. So, I built my own. No corporate nonsense, no secret data deals—just pure, security. + +Nobody can crack this. + +## Files +safe (the binary, nothing else) + +## How to Deploy +/ (the docker file is not for deployment) \ No newline at end of file diff --git a/snake-safe/SOLUTION.md b/snake-safe/SOLUTION.md new file mode 100644 index 0000000..f94b20c --- /dev/null +++ b/snake-safe/SOLUTION.md @@ -0,0 +1,15 @@ +## Difficulty +medium 30/100 + +## Category +Reversing + +## How To Solve + +This is a binary compiled from a python file using pyinstaller. +Pyinstaller actually bundles with a script that can extract the +python PYC file. Since an older version of python was used, this +can then be decompiled using decompile6 or even `https://pylingual.io/` + +## Flag +IGCTF{snaky-stuff} diff --git a/snake-safe/requirements.txt b/snake-safe/requirements.txt new file mode 100644 index 0000000..241259f --- /dev/null +++ b/snake-safe/requirements.txt @@ -0,0 +1 @@ +pyinstaller \ No newline at end of file diff --git a/snake-safe/safe b/snake-safe/safe new file mode 100755 index 0000000..7306d8f Binary files /dev/null and b/snake-safe/safe differ diff --git a/snake-safe/safe.py b/snake-safe/safe.py new file mode 100644 index 0000000..93a19bf --- /dev/null +++ b/snake-safe/safe.py @@ -0,0 +1,83 @@ +import time, sys + +SUPER_SECURE_PASS = "ea44eb3b-ea83-4779-807b-f7a5776d2e8d" + + +def print_safe(): + safe = r""" + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @@@@@ @@@@@ + @@@@@ @@@@@ + @@@@@ #@@@@@@% +@%: @@@@@ + @@@@@ %@@@#@@@= %@@@@@+ @@@@@ + @@@@@ @@@#*@@@@@@@@#@@@@%@@@% @@@@@ + @@@@@ *@@@+%@@@@@@@@@@#=@@@@: @@@@@ + @@@@@ :@@@@@- =#-#@@@# @@@@@ + @@@@@ +@@@% #@@@# @@@@@ + @@@@@ +@@@+ +@@@@@@@@- =@@@* @@@@@ + @@@@@ #@@@@@@@@* :@@@@%##@@@@@ *@@@: @@@@@ + @@@@@ @@@@@@@@@ @@@% :@@@* @@@@@@@%+ @@@@@ + @@@@@ @@@@%%##= :@@@+ *@@% *@@@@@@@@ @@@@@ + @@@@@ @@@@@@@@@: @@@@ -@@@* *%%%%%@@% @@@@@ + @@@@@ @@@# @@@@@@@@@@@@ #@@@@@@@@# @@@@@ + @@@@@ =@@@* +@@@@@@@@- *@@@+ :-== @@@@@ + @@@@@ =@@@@: -@@@@+ @@@@@ + @@@@@ #@@@+=*= %@@@@: @@@@@ + @@@@@ %@@@+@@@@@@@@@@@@=@@@* @@@@@ + @@@@@ %@@@#@@@@#@@@@@@@@%+@@@+ @@@@@ + @@@@@ -@@@@@@@ -@@@@@@@@ @@@@@ + @@@@@ =@@% =@@@@@+ @@@@@ + @@@@@ @@@@@ + @@@@@ @@@@@ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + __ + ___ ___ ___ _ _ _ __ ___ ___ __ _ / _| ___ + / __|/ _ \/ __| | | | '__/ _ \ / __|/ _` | |_ / _ \ + \__ \ __/ (__| |_| | | | __/ \__ \ (_| | _| __/ + |___/\___|\___|\__,_|_| \___| |___/\__,_|_| \___| + +""" + + print(safe) + + +def print_flag(): + print("Your passwords:") + passwords = """ ++-----------+-----------------------+ +| title | password | ++-----------+-----------------------+ +| mom email | coolmom1967 | +| flag | IGCTF{snaky-stuff} | +| wifi | pass123 | ++-----------+-----------------------+ +""" + print(passwords) + + +def print_wrong(): + print("WRONG, locking you out") + + +def request_password(): + p = input("Password > ") + + for _ in range(5): + print(".", end="") + sys.stdout.flush() + time.sleep(1) + print("") + + if p == SUPER_SECURE_PASS: + print_flag() + else: + print_wrong() + + +if __name__ == "__main__": + print_safe() + request_password()