Bandit 6 --❯ 10


Juegos de Guerra "Bandit" Overthewire

Published on August 23, 2023 by Gmichet

LINUX BANDIT

6 min READ

Continuación del post anterior Bandi 0 -> 5

SkillsEnlace
Búsquedas con la opción -execFind ruta opciones -exec comando ‘{}’ ‘;’
Uso de tuberías y búsquedas por nombres especificos en un fileGrep “palabra”
Ordenar las líneas de un archivo y eliminar líneas duplicadasSort and uniq -u
Extraer palabras de un archivo que contiene “data” no legibleStrings data.txt
Codificación “base64”Codificar y decodificar

Indice


Bandit 6 al 7

La contraseña para el siguiente nivel se almacena en algún lugar del servidor y tiene todas las siguientes propiedades:

  • owned by user bandit7
  • owned by group bandit6
  • 33 bytes in size

Sitio Oficial Material de apoyo

Iniciamos:

ssh bandit6@bandit.labs.overthewire.org -p 2220

Resolviendo Nivel 6

Antes que nada debemos investigar qué es owned, bueno eso significa “propiedad”. Entonces tenemos que buscar un archivo que sea propiedad del usuario bandit7 y del grupo bandit6 con un tamaño de 33 bytes.

bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c -exec ls '{}' ';'
find: ‘/var/log’: Permission denied
find: ‘/var/crash’: Permission denied
find: ‘/var/spool/rsyslog’: Permission denied
find: ‘/var/spool/bandit24’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/tmp’: Permission denied
find: ‘/var/lib/polkit-1’: Permission denied
/var/lib/dpkg/info/bandit7.password
find: ‘/var/lib/chrony’: Permission denied
find: ‘/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/amazon’: Permission denied
find: ‘/var/lib/update-notifier/package-data-downloads/partial’: Permission denied
# etc...
  • Me arroja errores porque no tengo permisos suficientes para listar en la raíz para no ver el stderr podemos utilizar 2> /dev/null esto funciona como un agujero negro el stderr llegara a ese lugar y no a nuestro stdout.
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c -exec ls '{}' ';' 2> /dev/null
/var/lib/dpkg/info/bandit7.password

bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S

Bandit 7 al 8

La contraseña para el siguiente nivel se almacena en el archivo data.txt junto a la palabra millionth.

Iniciamos:

ssh bandit7@bandit.labs.overthewire.org -p 2220

Resolviendo Nivel 7

Si intentas ver el archivo data.txt para encontrar la palabra millionth, notarás que se muestran demasiadas cadenas de texto:

bandit7@bandit:~$ cat data.txt
livening	ghjJ7JbWN9Y2bdWrrFsJMPfIsSLGfwzo
outsourcing	ZawStsEWTrnqxrWb0qdEj6zsSbfFUtSt
unifying	19J64sDjbnMm4cmWI0855wuEHdVpve2j
ghettos	30zvDfdusCKmfmi8mHnZ4PKHz84SAbXs
halitosis	xWCickKHXD147opexMuz4liHhIbcywCL
Gomulka's	i9ucPsLuDKEu9kAfVb0tgggcuWFhU9qG
blurring	x8mAnJVqmhUuKqJwnuWg8IGWPD2WWz8Y
unwarier	uiHmfNPARQDhTlk0XNdgakkbT3LL5iKt
artistry's	gw8hgyxxuqcZqFzWae6nrK4RDd5EAvrz
meridians	et472t0PTJB1bbC7F1eSnwBbvtuZuXO6
Todd	ESNGwTqgHRZV0ctkkMZyH5Nazkwb4Kmf
Rena's	okLUPygF2lEWprPrgiUoNGINk0EpWrwQ
# etc ...
  • Por suerte hay un comando que nos puede ayudar y es el comando grep, este se puede utilizar para buscar dentro de archivos, un ejemplo podría ser buscar la palabra linux dentro del archivo.txt:
grep -i "linux" archivo.txt
  • Ahora probemos con el archivo data.txt y por la palabra millonth. Algo que no mencione en los niveles pasados es el uso del pipe o tuberia | este sirve para conectar otro comando aparte del que le precede:
bandit7@bandit:~$ cat data.txt | grep "millionth"
millionth	TESKZC0XvTetK0S9xNwm25STk5iWrBvP

# otras formas

bandit7@bandit:~$ awk '/millionth/{print}' data.txt
millionth	TESKZC0XvTetK0S9xNwm25STk5iWrBvP

bandit7@bandit:~$ sed -n '/millionth/p' data.txt
millionth	TESKZC0XvTetK0S9xNwm25STk5iWrBvP

bandit7@bandit:~$ egrep "millionth" data.txt
millionth	TESKZC0XvTetK0S9xNwm25STk5iWrBvP

grep "millionth"  data.txt 
millionth	TESKZC0XvTetK0S9xNwm25STk5iWrBvP

Bandit 8 al 9

La contraseña para el siguiente nivel se almacena en el archivo data.txt y es la única línea de texto que aparece una sola vez.

Sitio Oficial

Iniciamos:

ssh bandit8@bandit.labs.overthewire.org -p 2220

Resolviendo Nivel 8

Ahora al listar aparecen demasiados caracteres, esto se puede notar por el siguiente comando:

bandit8@bandit:~$ cat -n data.txt
   995	txpoO5Sv4NR55wTu62j7uGlRKNxridyM
   996	cmtlazWcnfmS07dz52EdwhfVXD5hm8Ox
   997	0zP9wfUcMKjZM2hiQUYR1nTfmaRdYSQE
   998	8mUGsbsFDyMVhqsbCIu5VQdKyNS6B4yK
   999	pI3SEH0Rq3gd0sNEi8038Sh5SAtY1nrR
  1000	1MUdfR7bGGCpNfGEOXaIEdrA8hT2L8Tk
  1001	S9dq4wwCTyH9TyUrDfO8bOVywef9rVsh
  • Usando sort para ordenar las líneas de un archivo, mientras que uniq se utiliza para identificar y eliminar líneas duplicadas.
bandit8@bandit:~$ sort data.txt | uniq -u
EN632PlfYiZbn3PhVK3XOGSlNInNE00t

Bandit 9 al 10

La contraseña para el siguiente nivel se almacena en el archivo data.txt en una de las pocas cadenas legibles por humanos, precedida por varios caracteres ‘=’.

Sitio Oficial

Iniciamos:

ssh bandit9@bandit.labs.overthewire.org -p 2220

Resolviendo Nivel 9

Cuando mostramos el contenido del archivo data.txt observamos que hay demasiada data:

bandit9@bandit:~$ cat data.txt 
qӢ�'Z�F0�/��yLR����W������k͜�)��Ъx<9s}�1״��0� %S�ȭ��5�Y��#��ڝB4Qle��<���0N;��j�X��������f�MsC
                                     n�o4��b�Xْ!�0�a�u�	�j�m��w�S�]��O��
                                                                        �(<��[��Z ܚ�}�9�7��EbX�SM=�O�3�h{��J����Q?cX(�������Z\�25��O	l����f`	W0�n��ݟ����h�~���]�o��t߅���8r��M�mH�`��vOs*[�p��HA-���~gܙ?`YOd45�Ҽ+8�&�Ϧ\�*�����;>|�.����=��%=�z�q�?��1zo\ו/g·WY
�dv��b�`�)2�*������M���vژ�@�                                    �d6�V�X
                             �Iiuv�;� ��8g���|S5j��m���ߜ dn��JF�0��h�&����M����3�o�i�yA�|ɹ�nL��IF�C^��w����W������hZOh|
                                                                                                                       v���H���Q~4	py����Rꟗ�}^�����[���U���������j�#�ӭ_�gO�8	i�õe!q�
  • Para resolver necesitamos buscar en el archivo una cadena legible y que le preceden varios caracteres =.

Strings

EL comando strings sirve para extraer palabras o texto dentro de un archivo, incluso si el archivo contiene otros datos no legibles.

bandit9@bandit:~$ strings data.txt | grep "="
4========== the#
5P=GnFE
========== password
'DN9=5
========== is
$Z=_
=TU%
=^,T,?
W=y 
q=W 
X=K,
========== G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
&S=(
nd?=

Bandit 10 al 11

La contraseña para el siguiente nivel se almacena en el archivo data.txt, que contiene datos codificados de base64.

Sitio Oficial

Iniciamos:

ssh bandit10@bandit.labs.overthewire.org -p 2220

Resolviendo Nivel 10

La contraseña para el siguiente nivel se almacena en el archivo data.txt, que contiene datos codificados de base64.

bandit10@bandit:~$ cat data.txt 
VGhlIHBhc3N3b3JkIGlzIDZ6UGV6aUxkUjJSS05kTllGTmI2blZDS3pwaGxYSEJNCg==

-

Base64

Base 64 no es un método de encriptación de datos más bien es una codificación. Una codificación consiste en transformar un carácter del alfabeto a otro lenguaje.

Base64 utiliza la codifiación de datos binarios (como imágenes o archivos) a texto con el propósito de que la transferencia de los mismos se puedan realizar en canales que solo admiten texto, esto se hacen en medios que no puedan manejar datos binarios.

Codificar y decodificar base64 en la terminal

Para codificar se utiliza base64:

echo gmichet | base64
Z21pY2hldAo=
  • Para decodificar se agrega un -d al final:
echo Z21pY2hldAo= | base64 -d
gmichet
  • Ahora podemos decodificar el arhivo data.txt
bandit10@bandit:~$ cat data.txt | base64 -d
The password is 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
  • La mayoría de la codificación base64 se puede reconocer por agregar al final el signo =.

Gmichet

Autodidacta apasionado por la informática y entusiasta de los CTF. Constantemente aprendiendo.

2023 | WhatATheme - A Theme made with by Gmichet Powered by Jekyll