Bandit Nivel 27 a 28

Página oficial: https://overthewire.org/wargames/bandit/bandit28.html

Este nivel es tu primer contacto con Git: una herramienta de control de versiones que usan millones de proyectos de software. Aquí aprenderás a clonar (descargar) un repositorio remoto usando SSH y a leer su contenido.


Objetivo

La contraseña del nivel 28 está almacenada dentro de un repositorio Git accesible por SSH dentro del propio servidor. Tu misión es clonar ese repositorio y encontrar el archivo que la contiene.


Qué aprendes

Comandos clave

ComandoPara qué sirve
mkdirCrear un directorio nuevo
git clone <url>Descargar (clonar) un repositorio Git completo desde una URL remota
lsListar el contenido de un directorio
catMostrar el contenido de un archivo

Conceptos

  • Repositorio Git: carpeta de proyecto con historial de cambios gestionado por Git. Puede estar local o en un servidor remoto.
  • git clone: copia entera del repositorio (archivos + historial) desde el servidor a tu máquina (o en este caso, a un directorio temporal en el servidor).
  • URL SSH de Git: tiene la forma ssh://usuario@host:puerto/ruta/al/repo. Git sabe conectarse por SSH igual que tú lo haces con el comando ssh.
  • /tmp: directorio especial en Linux donde cualquier usuario puede escribir archivos temporales. Ideal para trabajar sin permisos especiales.

Paso a paso

1. Conéctate al nivel 27

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

Usa la contraseña que obtuviste en el nivel anterior.

2. Crea un directorio temporal de trabajo

No puedes escribir en el directorio home de bandit27, así que usas /tmp. Elige un nombre único para evitar colisiones con otros jugadores:

mkdir /tmp/mi_trabajo_27

No verás output si todo va bien (en Linux, silencio = éxito).

3. Clona el repositorio Git por SSH

Nota sobre localhost (aplica a todos los niveles git, 27→32): a diferencia del login SSH normal (que sí bloquea localhost, ver 14-nivel-13-a-14), el clon git va por el usuario git-shell y la página oficial de OverTheWire sigue usando localhost, así que normalmente funciona desde dentro. Si te diera Connecting from localhost is blocked to conserve resources, cambia localhost por el hostname real (mismo puerto 2220): git clone ssh://bandit27-git@bandit.labs.overthewire.org:2220/home/bandit27-git/repo /tmp/mi_trabajo_27/repo — o clónalo desde tu propio portátil con la misma contraseña.

git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo /tmp/mi_trabajo_27/repo

Desglose de la URL:

  • ssh:// — protocolo SSH
  • bandit27-git — usuario Git en el servidor (distinto de bandit27)
  • localhost — el propio servidor de bandit (nos conectamos a él mismo)
  • :2220 — puerto SSH no estándar que usa OverTheWire
  • /home/bandit27-git/repo — ruta al repositorio en el servidor

Git te pedirá la contraseña de bandit27-git. Esa contraseña es la misma que usas para conectarte como bandit27 (la que obtuviste en el nivel anterior):

Cloning into '/tmp/mi_trabajo_27/repo'...
The authenticity of host '[localhost]:2220 ([127.0.0.1]:2220)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2220' (ED25519) to the list of hosts.
                         _                     _ _ _
                        | |__   __ _ _ __   __| (_) |_
                        | '_ \ / _` | '_ \ / _` | | __|
                        | |_) | (_| | | | | (_| | | |_
                        |_.__/ \__,_|_| |_|\__,_|_|\__|

                      This is an OverTheWire game server.
            More information: https://overthewire.org/wargames

bandit27-git@localhost's password:
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

4. Entra en el repositorio clonado

cd /tmp/mi_trabajo_27/repo
ls

Verás algo como:

README

5. Lee el archivo README

cat README

Verás:

The password to the next level is: <cadena_de_~32_caracteres>

Esa <cadena_de_~32_caracteres> es la contraseña real de bandit28. Copiala.


Por qué funciona

Git está diseñado para trabajar en red. Cuando le das una URL del tipo ssh://usuario@host:puerto/ruta, usa SSH como transporte: se autentica con las credenciales de ese usuario y descarga el repositorio completo.

En este nivel, el servidor de OverTheWire actúa como servidor Git y como tu terminal a la vez. Clonas desde dentro del mismo servidor usando localhost, lo que es perfectamente válido. El repositorio bandit27-git/repo tiene permisos para ser leído por bandit27-git (no por bandit27 directamente), por eso Git usa ese usuario específico.

Una vez clonado, el repositorio es una carpeta normal en /tmp y puedes navegarla con ls, cat, etc.


Errores comunes

”Could not create directory ‘/home/bandit27/.ssh’”

Aviso inofensivo. SSH intenta guardar el fingerprint pero no tiene permisos en el home de bandit27. El clone sigue funcionando.

”Permission denied” al clonar

Comprueba que escribiste bandit27-git (con guion y git al final) como usuario en la URL, no bandit27.

”Host key verification failed”

Ocurre si escribes no cuando te pregunta si confiar en el host. Vuelve a ejecutar el git clone y responde yes.

El directorio /tmp/mi_trabajo_27 ya existe (si repites el nivel)

Usa un nombre distinto o borra el anterior con rm -rf /tmp/mi_trabajo_27 antes de volver a empezar.

Se queda esperando sin hacer nada

Asegúrate de que incluiste :2220 en la URL. Sin el puerto, intenta conectarse al puerto SSH estándar (22) y el servidor no responde.


Pasar al siguiente nivel

Con la contraseña obtenida del README, conéctate a bandit28:

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

Cuando te pida la contraseña, pega la <cadena_de_~32_caracteres> que copiaste.


Conexiones