Retos GNU/Linux (Bandit)

Introduccion

Este mini-curso usa el wargame Bandit de OverTheWire como practica guiada para reforzar:

  • Conexion remota por SSH usando un puerto no estandar.
  • Navegacion en el sistema de archivos y lectura de archivos.
  • Habitos de seguridad basicos (verificacion de huella, no publicar credenciales).

Al final de esta seccion deberias poder pasar de Bandit Nivel 0 a Nivel 1 (sin spoilers del password del Nivel 1).

Bandit esta pensado para principiantes: avanzas por niveles, y cada nivel te entrega informacion para entrar al siguiente.

Informacion oficial: https://overthewire.org/wargames/bandit/

Informacion de SSH (Bandit)

Dato Valor
Host bandit.labs.overthewire.org
Port 2220
Usuario bandit0 .. bandit34
Password inicial bandit0

Mapa de niveles (Bandit)

Este es el listado oficial de niveles (en el sitio, la pagina del nivel N explica el salto N-1 -> N).


Objetivos por nivel (resumen, sin spoilers)

Este resumen toma el Level Goal oficial y lo deja en una sola linea por salto.

Tip💡 RECOMENDACION

Este anexo evita publicar writeups completos.

Casos de uso: - Usar Bandit como practica guiada sin exponer soluciones. - Mantener tus notas completas solo en local.

Cuando aplicar: - Para niveles posteriores al 0 -> 1, usa la pagina oficial del nivel como fuente principal.

Salto Objetivo (resumen) Pagina oficial
0 -> 1 Password en readme en el home de bandit0. https://overthewire.org/wargames/bandit/bandit1.html
1 -> 2 Password en un archivo llamado - en el home. https://overthewire.org/wargames/bandit/bandit2.html
2 -> 3 Password en un archivo llamado --spaces in this filename-- en el home. https://overthewire.org/wargames/bandit/bandit3.html
3 -> 4 Password en un archivo oculto dentro del directorio inhere. https://overthewire.org/wargames/bandit/bandit4.html
4 -> 5 Password en el unico archivo legible (human-readable) dentro de inhere. https://overthewire.org/wargames/bandit/bandit5.html
5 -> 6 Password en algun archivo bajo inhere con propiedades especificas (size/owner, etc.). https://overthewire.org/wargames/bandit/bandit6.html
6 -> 7 Password en algun lugar del servidor con propiedades especificas (owner/group/size, etc.). https://overthewire.org/wargames/bandit/bandit7.html
7 -> 8 Password en data.txt, junto a la palabra millionth. https://overthewire.org/wargames/bandit/bandit8.html
8 -> 9 Password en data.txt: la unica linea que aparece una sola vez. https://overthewire.org/wargames/bandit/bandit9.html
9 -> 10 Password en data.txt: una de pocas strings legibles, precedida por varios =. https://overthewire.org/wargames/bandit/bandit10.html
10 -> 11 Password en data.txt con contenido codificado en base64. https://overthewire.org/wargames/bandit/bandit11.html
11 -> 12 Password en data.txt con ROT13 (a-z/A-Z rotados 13). https://overthewire.org/wargames/bandit/bandit12.html
12 -> 13 Password en data.txt: es un hexdump de un archivo comprimido repetidas veces. https://overthewire.org/wargames/bandit/bandit13.html
13 -> 14 Password en /etc/bandit_pass/bandit14 (solo lo lee bandit14); debes usar una clave privada para entrar. https://overthewire.org/wargames/bandit/bandit14.html
14 -> 15 Obtener el password enviando el password actual a localhost:30000. https://overthewire.org/wargames/bandit/bandit15.html
15 -> 16 Obtener el password enviando el password actual a localhost:30001 via SSL/TLS. https://overthewire.org/wargames/bandit/bandit16.html
16 -> 17 Encontrar el puerto correcto en 31000-32000 y enviar el password actual para obtener credenciales. https://overthewire.org/wargames/bandit/bandit17.html
17 -> 18 Comparar passwords.old vs passwords.new: la linea cambiada es el password. https://overthewire.org/wargames/bandit/bandit18.html
18 -> 19 Password en readme, pero .bashrc te desloguea al entrar por SSH. https://overthewire.org/wargames/bandit/bandit19.html
19 -> 20 Usar un binario setuid en el home para obtener el password del nivel. https://overthewire.org/wargames/bandit/bandit20.html
20 -> 21 Binario setuid que se conecta a localhost:<puerto> y reenvia una linea; debes usarlo para obtener el password. https://overthewire.org/wargames/bandit/bandit21.html
21 -> 22 Revisar /etc/cron.d/ para ver que comando se ejecuta automaticamente. https://overthewire.org/wargames/bandit/bandit22.html
22 -> 23 Igual: analizar cron en /etc/cron.d/ y el comando ejecutado. https://overthewire.org/wargames/bandit/bandit23.html
23 -> 24 Igual: analizar cron en /etc/cron.d/ y el comando ejecutado. https://overthewire.org/wargames/bandit/bandit24.html
24 -> 25 Daemon en localhost:30002 pide password + pin de 4 digitos. https://overthewire.org/wargames/bandit/bandit25.html
25 -> 26 Entrar a bandit26: su shell no es bash; debes entenderlo y escapar. https://overthewire.org/wargames/bandit/bandit26.html
26 -> 27 Ya con shell: obtener el password de bandit27 rapido. https://overthewire.org/wargames/bandit/bandit27.html
27 -> 28 Repo git via SSH en /home/bandit27-git/repo; password de bandit27-git es el mismo del usuario. https://overthewire.org/wargames/bandit/bandit28.html
28 -> 29 Repo git via SSH en /home/bandit28-git/repo. https://overthewire.org/wargames/bandit/bandit29.html
29 -> 30 Repo git via SSH en /home/bandit29-git/repo. https://overthewire.org/wargames/bandit/bandit30.html
30 -> 31 Repo git via SSH en /home/bandit30-git/repo. https://overthewire.org/wargames/bandit/bandit31.html
31 -> 32 Repo git via SSH en /home/bandit31-git/repo. https://overthewire.org/wargames/bandit/bandit32.html
32 -> 33 Escape adicional (despues de git). https://overthewire.org/wargames/bandit/bandit33.html
33 -> 34 Ver instrucciones del nivel final en la pagina oficial. https://overthewire.org/wargames/bandit/bandit34.html

Alternativas cuando te atascas (sin spoilers)

Si te quedas bloqueado en un nivel, estas son las alternativas recomendadas por OverTheWire.

1) Manual (man pages)

BASH
1$ man ls
2$ man ssh
3$ man 5 crontab

1
man ls explica opciones, formatos de salida y ejemplos; presiona q para salir.
2
man ssh ayuda a entender flags como -p, -i, -o.
3
man 5 crontab abre la documentacion del formato de crontab (seccion 5).

2) Help para built-ins del shell

BASH
1$ help cd
2$ help export
1
help cd muestra ayuda de un comando built-in (no siempre tiene man page).
2
help export ayuda con variables de entorno (util en niveles con scripts).

3) Buscar y validar hipotesis

  • Si ya sabes el nombre del comando pero no recuerdas el uso, busca: "<comando> example".
  • Si el nivel menciona un concepto (ej: “base64”, “strings”, “cron”), busca el concepto y vuelve al manual.

4) Comunidad


Nota para VMs: error “broken pipe” en SSH (modo NAT)

En algunas VMs, SSH puede fallar con un error tipo “broken pipe” cuando el adaptador de red esta en NAT.

La recomendacion de OverTheWire es agregar IPQoS throughput a /etc/ssh/ssh_config.

Warning⚠️ ADVERTENCIA CRITICA

Modificar configuracion SSH en un servidor real puede cortar conexiones.

Lo que podria salir mal: - Dejar SSH con configuracion invalida o no deseada.

Como prevenirlo: 1. Aplica esto solo en tu VM de laboratorio. 2. Mantiene una sesion abierta mientras pruebas. 3. Si no funciona, cambia el adaptador a modo Bridged.

Ejemplo (VM Ubuntu Server LTS):

BASH
1$ sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
2$ printf "\nHost *\n  IPQoS throughput\n" | sudo tee -a /etc/ssh/ssh_config >/dev/null
3$ grep -n "IPQoS" /etc/ssh/ssh_config

1
cp crea un backup de la configuracion del cliente SSH.
2
tee -a agrega IPQoS throughput para evitar problemas de QoS en NAT.
3
grep -n verifica que la linea quedo escrita.

Comandos que puedes necesitar

En este salto (Nivel 0 -> Nivel 1) normalmente basta con:

  • ls, cd, cat, file, du, find
Note📝 NOTA

Las contrasenas no se guardan automaticamente y pueden cambiar. Si no las registras, tendras que empezar de nuevo.

Tip💡 RECOMENDACION

Crea un archivo de notas local para usuarios y passwords.

Casos de uso: - Guardar como te conectaste (host, puerto, usuario). - Registrar como resolviste cada nivel sin publicar la respuesta.

Cuando aplicar: - Cada vez que completes un nivel.

Warning⚠️ ADVERTENCIA CRITICA

No publiques passwords ni writeups completos de niveles.

Lo que podria salir mal: - Te banean del juego. - Compartes credenciales que cambian o que otros estan usando.

Como prevenirlo: 1. Escribe tus notas en tu maquina local. 2. En documentacion publica, usa placeholders como **PASSWORD_NIVEL_1**.

Reto: Bandit Nivel 0 -> Nivel 1

Objetivo del nivel

La contrasena para el siguiente nivel esta en un archivo llamado readme ubicado en tu directorio de inicio. Una vez que la encuentres, inicia sesion como bandit1 por SSH (puerto 2220) y continua el juego.

Note📝 NOTA

En SSH no se muestra lo que escribes cuando te pide password. Esto es normal.

Datos de conexion (Nivel 0)

  • Host: bandit.labs.overthewire.org
  • Puerto: 2220
  • Usuario: bandit0
  • Password inicial: bandit0

Errores comunes al conectarte por SSH

Un error tipico es escribir host:puerto (esto no define el puerto, se interpreta como parte del hostname).

BASH
1$ ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: Name or service not known
1
ssh no acepta host:puerto en ese formato; debes pasar el puerto con -p.
BASH
1$ ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: nodename nor servname provided, or not known
1
ssh en macOS muestra el mismo problema: el :2220 se vuelve parte del hostname.
POWERSHELL
1PS> ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: No such host is known.
1
ssh en Windows (OpenSSH) tambien interpreta :2220 como parte del nombre del host.

Conexion correcta (puerto 2220)

BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 (51.21.210.216)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:
1
ssh -p define el puerto remoto; aqui 2220.
BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 ([51.21.210.216]:2220)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:
1
ssh -p es la forma correcta de usar un puerto no estandar en macOS.
POWERSHELL
1PS> ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 (51.21.210.216)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:
1
ssh -p tambien funciona igual en Windows con OpenSSH.

Ejemplos Practicos Multi-SO

Warning⚠️ ADVERTENCIA CRITICA

No aceptes huellas (fingerprints) a ciegas en servidores reales.

Lo que podria salir mal: - Ataque de tipo Man-in-the-Middle.

Como prevenirlo: 1. Verifica la huella publicada por el proveedor/infra. 2. Si cambia inesperadamente, detente y valida con el administrador.

Dentro del servidor: encontrar el password del Nivel 1

Una vez dentro como bandit0, tu objetivo es leer el archivo readme en el home.

BASH
1bandit0@bandit:~$ ls
readme
1
ls lista el contenido del directorio actual; aqui ves el archivo readme.
BASH
1bandit0@bandit:~$ file readme
readme: ASCII text
1
file identifica el tipo de archivo; en este caso es texto plano.
BASH
1bandit0@bandit:~$ du -h readme
4.0K\treadme
1
du -h muestra el tamano del archivo de forma legible.
BASH
1bandit0@bandit:~$ find ~ -maxdepth 1 -type f -name readme
/home/bandit0/readme
1
find sirve para ubicar archivos por nombre; aqui busca readme en tu home.
BASH
1 bandit0@bandit:~$ cat readme
 **PASSWORD_NIVEL_1**
1
cat imprime el contenido de readme; guarda ese valor en tus notas como password del Nivel 1.

Entrar al Nivel 1

Cuando ya tengas el password, sales y te conectas como bandit1.

BASH
1bandit0@bandit:~$ exit
logout
Connection to bandit.labs.overthewire.org closed.
1
exit cierra tu sesion SSH actual.
BASH
1$ ssh -p 2220 bandit1@bandit.labs.overthewire.org
bandit1@bandit.labs.overthewire.org's password:
1
ssh -p repite el patron, cambiando el usuario a bandit1.

Si ves “Permission denied”

Si escribes mal el password, SSH te lo dira.

BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
bandit0@bandit.labs.overthewire.org's password:
Permission denied, please try again.
1
Permission denied casi siempre significa password incorrecto (o usuario equivocado).
Solucion (oculta): Nivel 0 -> Nivel 1

Objetivo: leer ~/readme y usar ese valor como password para bandit1.

BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
bandit0@bandit.labs.overthewire.org's password:
1
ssh -p conecta al puerto 2220 con el usuario bandit0.
BASH
1bandit0@bandit:~$ cat ~/readme
**PASSWORD_NIVEL_1**
1
cat imprime el contenido del archivo readme del home; ese es el password del siguiente nivel.
BASH
1bandit0@bandit:~$ exit
logout
Connection to bandit.labs.overthewire.org closed.
1
exit cierra la sesion actual para reconectarte como bandit1.
BASH
1$ ssh -p 2220 bandit1@bandit.labs.overthewire.org
bandit1@bandit.labs.overthewire.org's password:
1
ssh -p repite el patron con el usuario del siguiente nivel.

Mini-guia para tus notas (local)

Una forma simple es guardar un archivo de texto en tu equipo.

BASH
1$ mkdir -p "$HOME/notas"
2 $ printf "%s\n" "Bandit0->Bandit1: **PASSWORD_NIVEL_1**" >> "$HOME/notas/bandit.txt"
3$ cat "$HOME/notas/bandit.txt"
 Bandit0->Bandit1: **PASSWORD_NIVEL_1**

1
mkdir -p crea una carpeta para tus notas.
2
printf agrega una linea al archivo de notas.
3
cat verifica el contenido guardado.
BASH
1$ mkdir -p "$HOME/notas"
2 $ printf "%s\n" "Bandit0->Bandit1: **PASSWORD_NIVEL_1**" >> "$HOME/notas/bandit.txt"
3$ cat "$HOME/notas/bandit.txt"
 Bandit0->Bandit1: **PASSWORD_NIVEL_1**

1
mkdir -p crea una carpeta para tus notas.
2
printf agrega una linea al archivo de notas.
3
cat verifica el contenido guardado.
POWERSHELL
1PS> New-Item -ItemType Directory -Force "$HOME\\notas"
2 PS> Add-Content -Path "$HOME\\notas\\bandit.txt" -Value "Bandit0->Bandit1: **PASSWORD_NIVEL_1**"
3PS> Get-Content "$HOME\\notas\\bandit.txt"
 Bandit0->Bandit1: **PASSWORD_NIVEL_1**

1
New-Item crea la carpeta de notas en PowerShell.
2
Add-Content agrega una linea al archivo de notas.
3
Get-Content verifica el contenido guardado.

Retos: Nivel 1 -> Nivel 34 (sin spoilers)

Estas secciones te dan el objetivo, los comandos tipicos y 2-3 pistas por salto.

Warning⚠️ ADVERTENCIA CRITICA

No publiques passwords ni writeups completos.

Lo que podria salir mal: - Compartir la solucion exacta elimina el aprendizaje.

Como prevenirlo: 1. Guarda el password de cada nivel en un archivo local. 2. En tu documentacion, usa placeholders como **PASSWORD_NIVEL_2**.

Bandit Nivel 1 -> Nivel 2

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit2.html
  • Objetivo: el password esta en un archivo llamado - en el home.
  • Comandos tipicos: ls, cat.
  • Pistas (sin spoilers):
    • Un nombre que empieza con - puede interpretarse como opcion; usa -- o un prefijo como ./.
    • Tab completion ayuda a evitar errores con nombres raros.

Bandit Nivel 2 -> Nivel 3

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit3.html
  • Objetivo: el password esta en un archivo con espacios en el nombre.
  • Comandos tipicos: ls, cat.
  • Pistas (sin spoilers):
    • Usa comillas ("...") o escapes (\) para rutas con espacios.
    • El autocompletado de la terminal suele completar el nombre correctamente.

Bandit Nivel 3 -> Nivel 4

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit4.html
  • Objetivo: el password esta en un archivo oculto dentro del directorio inhere.
  • Comandos tipicos: ls, cd, cat.
  • Pistas (sin spoilers):
    • Los archivos ocultos empiezan con .; usa listado que muestre ocultos.
    • Revisa que estas realmente dentro de inhere antes de leer.

Bandit Nivel 4 -> Nivel 5

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit5.html
  • Objetivo: el password esta en el unico archivo “human-readable” dentro de inhere.
  • Comandos tipicos: ls, file, cat.
  • Pistas (sin spoilers):
    • Usa file para clasificar rapidamente los archivos.
    • Si tu terminal queda “rara” por imprimir binarios, el sitio sugiere reset.

Bandit Nivel 5 -> Nivel 6

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit6.html
  • Objetivo: el password esta en algun archivo bajo inhere con propiedades especificas.
  • Comandos tipicos: find, du, file, cat.
  • Pistas (sin spoilers):
    • find puede filtrar por tamano (-size), tipo (-type f) y permisos (-readable).
    • Cuando identifiques candidatos, valida con file y luego lee con cat.

Bandit Nivel 6 -> Nivel 7

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit7.html
  • Objetivo: el password esta en algun lugar del servidor con propiedades especificas.
  • Comandos tipicos: find, grep.
  • Pistas (sin spoilers):
    • Filtra por usuario/grupo (-user, -group) y por tamano (-size).
    • Si hay muchos “Permission denied”, redirige stderr a /dev/null.

Bandit Nivel 7 -> Nivel 8

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit8.html
  • Objetivo: el password esta en data.txt, junto a la palabra millionth.
  • Comandos tipicos: grep, cat.
  • Pistas (sin spoilers):
    • Busca la linea que contiene la palabra; grep te da contexto rapido.
    • Si el archivo es grande, evita abrirlo completo; filtra.

Bandit Nivel 8 -> Nivel 9

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit9.html
  • Objetivo: el password es la unica linea en data.txt que aparece una sola vez.
  • Comandos tipicos: sort, uniq.
  • Pistas (sin spoilers):
    • uniq trabaja bien cuando el input esta ordenado.
    • Busca el modo de uniq que muestra solo lineas unicas.

Bandit Nivel 9 -> Nivel 10

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit10.html
  • Objetivo: el password esta en una de las pocas strings legibles del archivo, precedida por varios =.
  • Comandos tipicos: strings, grep.
  • Pistas (sin spoilers):
    • strings extrae texto imprimible desde binarios.
    • Filtra con grep por un patron que incluya =.

Bandit Nivel 10 -> Nivel 11

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit11.html
  • Objetivo: el password esta en data.txt y esta codificado en base64.
  • Comandos tipicos: base64.
  • Pistas (sin spoilers):
    • Necesitas decodificar base64 (no es cifrado).
    • Si hay saltos de linea, igual suele funcionar; valida el resultado como texto.

Bandit Nivel 11 -> Nivel 12

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit12.html
  • Objetivo: el password esta en data.txt con ROT13 aplicado.
  • Comandos tipicos: tr.
  • Pistas (sin spoilers):
    • ROT13 es una sustitucion simple; tr puede mapear A-Z/a-z a su rotacion.
    • No olvides mapear mayusculas y minusculas.

Bandit Nivel 12 -> Nivel 13

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit13.html
  • Objetivo: data.txt es un hexdump de un archivo comprimido repetidas veces.
  • Comandos tipicos: xxd, file, tar, gzip, bzip2.
  • Pistas (sin spoilers):
    • Convierte el hexdump a binario y luego usa file para saber que tipo de compresion hay.
    • Repite el ciclo: “identificar -> descomprimir -> volver a identificar” hasta llegar a texto.

Bandit Nivel 13 -> Nivel 14

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit14.html
  • Objetivo: leer el password de /etc/bandit_pass/bandit14 usando una clave privada (no se entrega el password directo).
  • Comandos tipicos: ssh, chmod.
  • Pistas (sin spoilers):
    • Asegura permisos de la clave (ej: chmod 600).
    • Conecta usando ssh -i y el puerto 2220.

Bandit Nivel 14 -> Nivel 15

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit15.html
  • Objetivo: enviar el password actual a localhost:30000 para recibir el siguiente.
  • Comandos tipicos: nc.
  • Pistas (sin spoilers):
    • Esto ocurre dentro del servidor (ya logueado).
    • Conecta a localhost (no al host remoto) y pega el password actual.

Bandit Nivel 15 -> Nivel 16

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit16.html
  • Objetivo: enviar el password actual a localhost:30001 usando SSL/TLS.
  • Comandos tipicos: openssl s_client.
  • Pistas (sin spoilers):
    • nc no cifra; aqui necesitas un cliente TLS.
    • Verifica que estas conectando al puerto correcto en localhost.

Bandit Nivel 16 -> Nivel 17

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit17.html
  • Objetivo: encontrar el servicio correcto en 31000-32000 y obtener credenciales enviando el password actual.
  • Comandos tipicos: nmap, openssl s_client, ss.
  • Pistas (sin spoilers):
    • Primero identifica que puertos estan abiertos en el rango.
    • No todos los puertos hablan TLS; prueba con un cliente TLS donde corresponda.

Bandit Nivel 17 -> Nivel 18

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit18.html
  • Objetivo: el password esta en passwords.new y es la unica linea distinta frente a passwords.old.
  • Comandos tipicos: diff.
  • Pistas (sin spoilers):
    • Usa diff para ver cambios exactos.
    • Extrae solo la linea nueva (la que se agrego/cambio).

Bandit Nivel 18 -> Nivel 19

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit19.html
  • Objetivo: el password esta en readme, pero al entrar por SSH te desloguean por .bashrc.
  • Comandos tipicos: ssh, cat.
  • Pistas (sin spoilers):
    • Puedes pedirle a ssh que ejecute un comando remoto sin iniciar un shell interactivo.
    • Otra alternativa es forzar un shell distinto o evitar cargar configuracion, segun el caso.

Bandit Nivel 19 -> Nivel 20

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit20.html
  • Objetivo: usar un binario setuid en el home para leer el password del siguiente usuario.
  • Comandos tipicos: ls, cat.
  • Pistas (sin spoilers):
    • Revisa permisos del binario (ls -la) y ejecutalo para ver como se usa.
    • El archivo de passwords suele estar en /etc/bandit_pass/.

Bandit Nivel 20 -> Nivel 21

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit21.html
  • Objetivo: usar un binario setuid que se conecta a localhost:<puerto> y reenvia una linea.
  • Comandos tipicos: nc, tmux/screen.
  • Pistas (sin spoilers):
    • Necesitas dos terminales: una escucha, la otra ejecuta el binario.
    • Si no tienes dos sesiones, usa job control (&, fg, bg) o tmux.

Bandit Nivel 21 -> Nivel 22

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit22.html
  • Objetivo: descubrir que programa corre por cron mirando /etc/cron.d/.
  • Comandos tipicos: cat, ls.
  • Pistas (sin spoilers):
    • Lee el archivo de cron y luego sigue la ruta del script que ejecuta.
    • El script normalmente deja evidencia (archivos temporales o salidas).

Bandit Nivel 22 -> Nivel 23

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit23.html
  • Objetivo: analizar cron y el comando que ejecuta.
  • Comandos tipicos: cat, grep.
  • Pistas (sin spoilers):
    • Identifica que usuario ejecuta el job y que archivos toca.
    • Corre el script manualmente (sin modificarlo) para entender que imprime/crea.

Bandit Nivel 23 -> Nivel 24

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit24.html
  • Objetivo: analizar cron y el comando que ejecuta.
  • Comandos tipicos: cat, bash.
  • Pistas (sin spoilers):
    • Revisa permisos de scripts y directorios que usa el job.
    • Si el job genera archivos en /tmp, busca patrones por nombre.

Bandit Nivel 24 -> Nivel 25

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit25.html
  • Objetivo: daemon en localhost:30002 pide password + pin de 4 digitos.
  • Comandos tipicos: nc, bash.
  • Pistas (sin spoilers):
    • Si no hay forma de derivar el pin, piensa en fuerza bruta controlada (0000-9999).
    • Automatiza: genera intentos y filtra solo la respuesta valida.

Bandit Nivel 25 -> Nivel 26

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit26.html
  • Objetivo: entrar como bandit26, pero su shell no es bash; debes entenderlo y escapar.
  • Comandos tipicos: ssh, more, vi.
  • Pistas (sin spoilers):
    • Revisa en /etc/passwd cual es el shell real de ese usuario.
    • Si caes en un paginador/editor, investiga como abrir un shell desde ahi.

Bandit Nivel 26 -> Nivel 27

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit27.html
  • Objetivo: con una shell funcional, obtener el password de bandit27.
  • Comandos tipicos: cat, ls.
  • Pistas (sin spoilers):
    • Sigue el patron /etc/bandit_pass/.
    • No olvides guardar el password como **PASSWORD_NIVEL_27** en tus notas.

Bandit Nivel 27 -> Nivel 28

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit28.html
  • Objetivo: clonar un repo git via SSH y encontrar el password.
  • Comandos tipicos: git, ssh.
  • Pistas (sin spoilers):
    • Usa ssh://user@host:port/... o configura el puerto en la URL.
    • Revisa commits y contenido del repo (git log, git show).

Bandit Nivel 28 -> Nivel 29

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit29.html
  • Objetivo: repo git via SSH; el password no siempre esta en master.
  • Comandos tipicos: git.
  • Pistas (sin spoilers):
    • Lista ramas (git branch -a) y revisa commits por rama.
    • Busca en el historial, no solo en el ultimo commit.

Bandit Nivel 29 -> Nivel 30

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit30.html
  • Objetivo: repo git via SSH; puede involucrar tags.
  • Comandos tipicos: git.
  • Pistas (sin spoilers):
    • Lista tags (git tag) y revisa que contienen (git show <tag>).
    • Explora referencias: ramas remotas, tags y commits antiguos.

Bandit Nivel 30 -> Nivel 31

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit31.html
  • Objetivo: repo git via SSH; hay una accion especifica que debes realizar.
  • Comandos tipicos: git.
  • Pistas (sin spoilers):
    • Lee el README dentro del repo (a veces dice exactamente que hacer).
    • Puede requerir crear/modificar un archivo y hacer commit/push.

Bandit Nivel 31 -> Nivel 32

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit32.html
  • Objetivo: repo git via SSH; sigue las instrucciones del repo.
  • Comandos tipicos: git.
  • Pistas (sin spoilers):
    • Si hay hooks o validaciones, lee los mensajes del servidor.
    • Revisa ramas/tags e historial si el password no esta a simple vista.

Bandit Nivel 32 -> Nivel 33

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit33.html
  • Objetivo: escape adicional (despues de git).
  • Comandos tipicos: sh, man.
  • Pistas (sin spoilers):
    • Si hay un programa/shell raro, prueba rutas absolutas (/bin/bash, /bin/sh).
    • A veces el truco es como se interpretan mayusculas/minusculas o variables.

Bandit Nivel 33 -> Nivel 34

  • Pagina oficial: https://overthewire.org/wargames/bandit/bandit34.html
  • Objetivo: sigue las instrucciones del nivel final en la pagina oficial.
  • Comandos tipicos: depende del nivel.
  • Pistas (sin spoilers):
    • Lee la pagina oficial completa: suele incluir notas, archivos y paths clave.
    • Mantente en el patron: encontrar informacion en archivos/sistema y usarla para el siguiente salto.
Tip💡 RECOMENDACION

Mejores practicas

Aspecto Recomendacion
Puerto SSH Usa ssh -p 2220 ... (no host:puerto).
Seguridad Verifica la huella cuando sea un servidor real.
Orden Anota: nivel, usuario, password, comandos, resultado.
Etica No publiques passwords ni soluciones completas.

Resumen

  • El puerto en SSH se especifica con -p.
  • En Bandit, el Nivel 0 se trata de conectarte por SSH y leer readme.
  • Guarda el password del siguiente nivel en tus notas locales y continua con bandit1.

Referencias

Code Appendix