feat: add snake-safe challenge

This commit is contained in:
Abel Stuker 2024-11-25 22:33:02 +01:00
parent 36426b1807
commit ee4c9d49cb
6 changed files with 116 additions and 0 deletions

6
snake-safe/Dockerfile Normal file
View File

@ -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"]

11
snake-safe/README.md Normal file
View File

@ -0,0 +1,11 @@
# snake-safe
## Text
I dont trust those fancy password managers. Theyre 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)

15
snake-safe/SOLUTION.md Normal file
View File

@ -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}

View File

@ -0,0 +1 @@
pyinstaller

BIN
snake-safe/safe Executable file

Binary file not shown.

83
snake-safe/safe.py Normal file
View File

@ -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()