Autor: 1v4n a.k.a. @1r0Dm448O
Twitter: https://twitter.com/1r0Dm48O
Twitter: https://twitter.com/1r0Dm48O
Descripción
Fecha de liberación: 25 de abril de 2019
Dificultad: Bajo
Objetivo
Formato de flag: CSACTF{flag}
Herramientas utilizadas
Resumen:
Nos conectamos a la maquina en la IP 35.231.176.102 por ssh en el puerto 1773 con las credenciales user:utsacyber
root@1v4n:~# ssh user@35.231.176.102 -p1773
user@35.231.176.102's password: _________ _________ _____ _______________________________ \_ ___ \ / _____/ / _ \ \_ ___ \__ ___/\_ _____/ / \ \/ \_____ \ / /_\ \/ \ \/ | | | __) \ \____/ \/ | \ \____| | | \ \______ /_______ /\____|__ /\______ /|____| \___ / \/ \/ \/ \/ \/ Welcome to CSACTF 2019! If you find any problems, please report to admin. -[ Rule ]- A few rules before you get started: + don't leave orphan processes running + don't leave exploit-files laying around + don't annoy other players + don't share passwords/solutions + last but not least, don't spoil the fun! Have fun! - Blue user@4ccc23ce0216:~$ whoami user user@4ccc23ce0216:~$ pwd /home/user user@4ccc23ce0216:~$ id uid=1000(user) gid=1000(user) groups=1000(user) |
Nos encontramos ante un contenedor de Docker en una VM con OS Ubuntu en GCP . Y descubrimos un script llamado flag_reader.py en el directorio ~/home/user/
user@4ccc23ce0216:~$ ls -la
total 44 drwxr-xr-x 1 user user 4096 Apr 25 17:48 . drwxr-xr-x 1 root root 4096 Apr 22 20:12 .. -rw-r--r-- 1 user user 220 Aug 31 2015 .bash_logout -rw-r--r-- 1 user user 3796 Apr 25 17:47 .bashrc drwx------ 2 user user 4096 Apr 25 17:48 .cache -rw-r--r-- 1 user user 655 May 16 2017 .profile -rw-rw-r-- 1 user user 0 Apr 25 17:48 ahahaha -rwxrwxr-x 1 root root 267 Apr 22 20:09 flag_reader.py -rw-rw-r-- 1 root root 40 Apr 22 19:25 readme.txt -rw-r--r-- 1 user user 19 Apr 25 17:47 temp.txt user@4ccc23ce0216:~$ uname -a Linux 4ccc23ce0216 4.15.0-1029-gcp #31-Ubuntu SMP Thu Mar 21 09:40:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
Observamos que el script necesita de la existencia de un archivo llamado flag.txt que ha sido eliminado.
user@4ccc23ce0216:~$ ./flag_reader.py
Traceback (most recent call last): File "./flag_reader.py", line 5, in <module> f = open('flag.txt', 'r') IOError: [Errno 2] No such file or directory: 'flag.txt' user@4ccc23ce0216:~$ cat flag_reader.py #!/usr/bin/python import time import os f = open('flag.txt', 'r') # ==== Reading the flag flag = f.read() with open('temp.txt','w') as tmp: tmp.write('Reading the flag...') #print flag time.sleep(99999) # ==== Done, Cleaning up os.remove('temp.txt') f.close() |
Investigando existe la posibilidad de que el programa en ejecución tenga abierto el archivo eliminado podamos recuperar el archivo a través del descriptor de archivo abierto en /proc/[pid]/fd/[num]
user@4ccc23ce0216:~$ lsof | grep "/home/user/"
python 12 user 3r REG 0,80 37 774243 /home/user/flag.txt (deleted) |
Y ahí tenemos nuestro archivo con la flag que vamos a recuperar
user@4ccc23ce0216:~$ cp /proc/12/fd/3 /home/user/flag.txt
user@4ccc23ce0216:~$ cat flag.txt CSACTF{f34r_cuts_d33p3r_th4n_sw0rds} user@4ccc23ce0216:~$ |
La flag es: CSACTF{f34r_cuts_d33p3r_th4n_sw0rds}
No hay comentarios:
Publicar un comentario