Juegos de Guerra "Bandit" Overthewire
Published on August 23, 2023 by Gmichet
LINUX BANDIT
9 min READ
Este post tendrá información acerca de los juegos de guerra o mejor conocido como OverTheWireGames en especifíco de los juegos bandit (bandido). Esa página proporciona una base muy buena sobre conceptos de linux, en los que tendrás que enfrentarte a ciertos desafíos. Puedes visitar el enlace anterior para más información.
Skills | Enlace |
---|---|
ssh | Conexión ssh |
Mostrar contenido de un archivo “-“ | Entrada stdin |
Archivo con espacios | “spaces in this filename” |
Mostrar archivos ocultos | .hidden |
Buscando por archivos ASCII | ASCII text |
Búsquedas con find | find ruta opciones |
El objetivo de este nivel es que inicies sesión en el juego usando SSH. El host al que debe conectarse es bandit.labs.overthewire.org, en el puerto 2220. El nombre de usuario es bandit0 y la contraseña es bandit0.
Una vez conectado, ve al Nivel 1 página para descubrir cómo vencer al nivel 1).
Entramos por ssh
ssh bandit0@bandit.labs.overthewire.org -p 2220
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information on http://www.overthewire.org/wargames
bandit0@bandit.labs.overthewire.org's password: bandit0
bandit0@bandit:~$ ls
readme
bandit0@bandit:~$ cat readme
NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL
La contraseña para el siguiente nivel se almacena en un archivo llamado -
ubicado en el directorio de inicio.
Material de Apoyo
Iniciamos el nivel conectandonos por ssh:
ssh bandit1@bandit.labs.overthewire.org -p 2220
Listamos con ls:
bandit1@bandit:~$ ls
-
bandit1@bandit:~$ du -a
4 ./-
4 ./.profile
4 ./.bashrc
4 ./.bash_logout
20 .
.
Qué es Stdin
Es el flujo a través del cual un programa recibe datos de entrada. Es la forma en que un programa obtiene información de entrada (datos) desde el teclado u otra fuente.
file -
se utiliza para identificar el tipo de archivo que se encuentra en la entrada estándar (stdin).bandit1@bandit:~$ file -
# Presiona enter para mostrar
/dev/stdin: very short file (no magic)
La salida sería un stdout los resultados se muestran en la pantalla de la terminal por defecto.
Encontrando la llave
Para encontrar la llave teniendo en cuenta que necesita un dato de entrada para poder ejecutarse el stdin usemos un cat para mostrar todos los archivos en el directorio actual:
bandit1@bandit:~$ cat ./*
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
# Otras formas
bandit1@bandit:~$ cat ./-
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
bandit1@bandit:~$ find ./ -name "-" | xargs cat
rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi
La contraseña para el siguiente nivel se almacena en un archivo llamado spaces in this filename
en el directorio de inicio
Iniciamos
ssh bandit2@bandit.labs.overthewire.org -p 2220
Cuando tenemos un archivo que contiene espacios solo basta con hacerle un cat y presionar el tabulador, automáticamente se va a completar:
bandit2@bandit:~$ cat spaces\ in\ this\ filename
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
bandit2@bandit:~$ cat "spaces in this filename"
aBZ0W5EmUfAf7kHTQeOwd8bauFJ2lAiG
La contraseña para el siguiente nivel se almacena en un archivo oculto en el directorio inhere.
Iniciamos
ssh bandit3@bandit.labs.overthewire.org -p 2220
En archivos que no estan ocultos se pueden mostrar con un simple ls
pero los que están ocultos se deben mostrar con un ls -a
en donde “a” hace referencia a todos “all”.
bandit3@bandit:~$ ls
inhere
bandit3@bandit:~$ cd inhere/
bandit3@bandit:~/inhere$ ls
bandit3@bandit:~/inhere$
bandit3@bandit:~/inhere$ ls -a
. .. .hidden
bandit3@bandit:~/inhere$ cat .hidden
2EW7BBsr6aMMoJ2HjW067dm8EgX26xNe
La contraseña para el siguiente nivel se almacena en un directorio inhere y el archivo que es “only human-readable”.
Iniciamos
ssh bandit4@bandit.labs.overthewire.org -p 2220
Accedemos al directorio inhere a su vez que listamos todo lo que se almacena en dicho directorio:
bandit4@bandit:~$ cd inhere/
bandit4@bandit:~/inhere$
bandit4@bandit:~/inhere$ ls
-file00 -file01 -file02 -file03 -file04 -file05 -file06 -file07 -file08 -file09
file
podemos saber con que tipo de archivo estamos tratando:data: Contiene información en forma de datos.
ASCII text: Contiene texto legible.
Non-ISO extended-ASCII text, with no line terminators: ASCII extendido no estándar. El término “no-ISO” sugiere que no cumple con las normas ISO convencionales.
bandit4@bandit:~/inhere$ file ./*
./-file00: data
./-file01: data
./-file02: data
./-file03: data
./-file04: data
./-file05: data
./-file06: data
./-file07: ASCII text
./-file08: data
./-file09: Non-ISO extended-ASCII text, with no line terminators
bandit4@bandit:~/inhere$ cat ./-file07
lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR
La contraseña para el siguiente nivel se almacena en un archivo en algún lugar del directorio inhere y tiene todas las siguientes propiedades:
Iniciamos:
ssh bandit5@bandit.labs.overthewire.org -p 2220
Muy bien ahora podemos observar que en el directorio inhere hay muchas carpetas que a su vez contienen muchos archivos:
bandit5@bandit:~$ ls
inhere
bandit5@bandit:~$ cd inhere/
bandit5@bandit:~/inhere$ ls -a
. maybehere00 maybehere02 maybehere04 maybehere06 maybehere08 maybehere10 maybehere12 maybehere14 maybehere16 maybehere18
.. maybehere01 maybehere03 maybehere05 maybehere07 maybehere09 maybehere11 maybehere13 maybehere15 maybehere17 maybehere19
bandit5@bandit:~/inhere$ cd maybehere00
bandit5@bandit:~/inhere/maybehere00$ ls
-file1 -file2 -file3 spaces file1 spaces file2 spaces file3
El comando find (buscar) como su nombre lo indica buscará archivos basandose en las diferentes opciones que especifiques.
Ruta
/
Buscar en el directorio raíz, en todo el sistema..
Buscar en la carpeta en la que estas ubicado (pwd para saber tú ubicación).~
Para buscar desde el directorio home.Sintaxis básica
find [ruta] [opciones]
.
Buscando un directorio por nombre poemas desde el directorio raíz (2❯ /dev/null) se utiliza para evitar que te salgan mensajes de error.
❯ find / -name poemas 2> /dev/null
/home/gabriel/Documentos/Bash/Udemy/Scripts-Bash/Tareas/Regedex/poemas
/mnt/HDD1/Contenido/Practico/poemas
❯ find / -type f -name 'IP*.sh' 2> /dev/null
/home/gabriel/Scripts/Bash/IPv4.sh
/mnt/HDD1/BackupME/Archivos/Scripts/Bash/IPv4.sh
❯ find ~ -maxdepth 4 -type d -iname '*ath' 2> /dev/null
/home/gabriel/.oh-my-zsh/plugins/shrink-path
/home/gabriel/.oh-my-zsh/plugins/copypath
/home/gabriel/Documentos/Office/Math
❯ find . -name ".*" -maxdepth 1 ./.hidden_file
.
La opción -exec
se basa en la ejecución de cualquier comando en todos los elementos que encontro previamente el find.
Sintaxis
find [ruta] [opciones] -exec <comando> '{}' ';'
❯ find ~ -size +1G -exec ls '{}' ';'
/home/gabriel/Descargas/Loc-OS-22-LXDE-i386.iso
-
Ahora es momento de poner en práctica lo aprendido. Como sabemos el directorio en donde se encuentra el archivo y sus especificaciones, podemos utilizar el siguiento comando:
bandit5@bandit:~/inhere$ find ./* -type f -size 1033c -not -executable -exec file '{}' ';'
./maybehere07/.file2: ASCII text, with very long lines (1000)
bandit5@bandit:~/inhere$ cd ./maybehere07/
bandit5@bandit:~/inhere/maybehere07$ cat .file2
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU