martes, 14 de mayo de 2019

WRITEUP: Challenge Linux 201 by @1r0Dm448O

Autor: 1v4n a.k.a. @1r0Dm448O
Twitter: https://twitter.com/1r0Dm48O  

Descripción
Fecha de liberación: 25 de abril de 2019
Autor: 53cur17y4f73rh0ur5 (https://ctftime.org/team/46502)
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