← Volver al listado de tecnologías

Bandit Nivel 2→3 - Espacios en Nombres

Por: SiempreListo
overthewirebanditespacioscomillasnivel-3

Bandit Nivel 2→3 - Espacios en Nombres

Objetivo

La contraseña está en un archivo llamado spaces in this filename.

El Problema

cat spaces in this filename

Error: El shell interpreta cada palabra como un argumento separado, buscando 4 archivos diferentes.

Teoría: Manejo de Espacios

¿Por qué los espacios son problemáticos?

En la terminal, el espacio es el separador de argumentos:

comando arg1 arg2 arg3

Si el nombre tiene espacios, el shell lo divide incorrectamente.

Soluciones

1. Comillas Dobles

cat "spaces in this filename"

Todo dentro de las comillas se trata como un solo argumento.

2. Comillas Simples

cat 'spaces in this filename'

Similar a las dobles, pero no interpreta variables.

3. Escape con Backslash

cat spaces\ in\ this\ filename

El \ “escapa” el carácter siguiente, quitándole su significado especial.

4. Tab-completion

Escribe las primeras letras y presiona Tab:

cat spa[TAB]
# Se autocompleta a:
cat spaces\ in\ this\ filename

Diferencia entre Comillas

TipoSintaxisInterpreta VariablesEjemplo
Dobles"texto""Hola $USER"Hola bandit2
Simples'texto'No'Hola $USER'Hola $USER
nombre="mundo"
echo "Hola $nombre"   # Hola mundo
echo 'Hola $nombre'   # Hola $nombre

Solución

# Método 1: Comillas dobles
cat "spaces in this filename"

# Método 2: Comillas simples
cat 'spaces in this filename'

# Método 3: Escape
cat spaces\ in\ this\ filename

# Método 4: Tab completion
cat spa<TAB>

Buenas Prácticas

  1. Evita espacios en nombres de archivo cuando sea posible
  2. Usa guiones bajos _ o guiones - en su lugar
  3. Si debes usar espacios, siempre usa comillas al referenciarlos
  4. El Tab-completion es tu amigo

Comandos Aprendidos

ConceptoUso
"texto"Comillas dobles - agrupa argumentos
'texto'Comillas simples - agrupa sin interpretar
\ Escape de espacio
TabAutocompletar nombres

Conexión al Siguiente Nivel

ssh [email protected] -p 2220