jueves, 9 de septiembre de 2021

OverTheWire

 

Over the wire es un plataforma de juegos de guerra ayudando a la comunidad con conceptos de seguridad a traves de juegos, la dinamica es a traves de niveles y categorias.

 

Bandit 

Hoy quiero compartirles no tanto como solucionar estos retos, sino como alcansar los comandos indicados para facilitar su comprension. A medida que vaya avanzando en los niveles se ira profundizando mas los comandos.


Reto 0:

El objetivo de este nivel es que te conectes al juego usando SSH. El host al que debes conectarte 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 a la página del Nivel 1 para saber cómo superar el Nivel 1.


ssh:

Para ingresar a traves de ssh necesitas los siguientes parametros

shh {usuario}@{hostname} -p{puerto} ssh bandit0@bandit.labs.overthewire.org -p 2220


Reto->1:

La contraseña para el siguiente nivel se almacena en un archivo llamado readme ubicado en el directorio home. Usa esta contraseña para entrar en bandit1 usando SSH. Siempre que encuentres una contraseña para un nivel, usa SSH (en el puerto 2220) para entrar en ese nivel y continuar el juego.

ls

 Es un comando que se utiliza para enumerar directorios y archivos

ls {ruta}
ls		//directorio actual
ls /		//directirio raiz
ls ..		//directorio padre
ls ../..	//directorio dos niveles arriba

  

cat

 Es un comando muy versatil que permite fusionar,crear y leer archivos

cat {ruta} {archivo}
cat file	//lee en archivo file

  

Reto->2:

La contraseña para el siguiente nivel se almacena en un archivo llamado - ubicado en el directorio de inicio.

cat

 Utilizando en un archivo con nombre "-" accede a la funcion STDIN (standar input) que permite leer por consola la entrada de texto. Para acceder al contenido hay que anteponerle al archivo

cat ./{file}

  

Reto->3:

La contraseña para el siguiente nivel se almacena en un archivo llamado espacios en este nombre de archivo situado en el directorio de inicio.

cat

 Utilizando en un archivo con nombre espacios en el nombre para acceder hay que colocar el nombre dentro de comillas

cat "a b"

  

Reto->4:

La contraseña para el siguiente nivel se almacena en un archivo oculto en el directorio inhere.

ls

 Un archivo que se le antepone un punto al comienzo del nombre es considerado archivo oculto, para listarlo hay que pasarle -a como parametro

ls -a

  

Reto->5:

La contraseña para el siguiente nivel se almacena en el único archivo legible por humanos en el directorio inhere. Consejo: si su terminal está desordenada, pruebe el comando "reset".

file

 Este comando brinda informacion sobre el tipo de ficheros, teniendo en cuenta que todos comienzan con -

file {opcion} {archivo/directorio}
file ./*

  

Reto->6:

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: legible para el ser humano, 1033 bytes de tamaño, no ejecutable.

find

 Es una herramienta estremadamente potente y precisa al buscar ficheros y directorios de manera recursiva

find {ruta} {opcion}
find . -size 1033c		//busca en la carpeta actual un archivo que pese exactamente 1033 bytes
find . -exacutable		//Busca un archivo que sea ejecutable
find . ! -exacutable -size 1033c //Busca un archivo no ejecutable y un peso exacto

  

Reto->7:

La contraseña para el siguiente nivel se almacena en algún lugar del servidor y tiene todas las siguientes propiedades: propiedad del usuario bandit7, propiedad del grupo bandit6, 33 bytes de tamaño.

find

 Similar al problema anterior pero ahora busca en sistema

find / -size 33c	//busca que pese 33 bytes
find / -user bandit7	//Busca que pertenesca a un usuario
find / -group bandit6	//Busca que pertenesca a un grupo

  

Reto->8:

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

grep

 Es una herramienta del sistema que permite encontrar patrones tanto en archivos como directorios

grep '{patron a buscar}' {archivo(s)}
grep -i patron} {file}		//imprime las coincidencias ignorando las mayus minus
grep -n {patron} {file}		//enumera e imprime el resultado de las coincidencias

  

Reto->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.

sort y uniq

 Sort es ideal para ordenar, ordenar por fechas, por inverso y uniq mostrar resultados de un archivo al ser unicos, considerando como repetido en lineas subyacentes por lo tanto se suele trabajar con ambos comandos

sort {file} | uniq	//ordena y muestra los resultados unicos
sort {file} | uniq -i	//Ordena ignora si son mayus o minus
sort {file} | uniq -c 	//Muestra el numero de ocurrencias 
sort {file} | uniq -u 	//Muestra los resultados unicos 

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se quiere extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->11:

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

base64

 Este comando permite codificar y decodificar cadenas en base64 desde la consola

base64 {file} //codifica el contenido de un archivo a base64
base64 -d {file}	//convierte el contenido del archivo en base64 a texto legible
echo "Welcome to overthewire - bytefate" | base64 //codifica directamente la linea de texto
echo "V2VsY29tZSB0byBvdmVydGhld2lyZSAtIGJ5dGVmYXRl" | base64 -d //codifica directamente la linea de texto

  

Reto->12:

La contraseña para el siguiente nivel se almacena en el archivo data.txt, donde todas las letras minúsculas (a-z) y mayúsculas (A-Z) han sido rotadas en 13 posiciones.

tr

 El comando tr significa translate, trabajando directamente con stdio, np permitiendo trabajar directamente con el archivo, puede manipular, transformar eliminar, cambiar letras, limitadores entre otros. tr trabaja con un conjunto de opciones, que por defecto se puede dejar en blanco, el set1 son los caracteres que se buscaran en el texto, el set2 son el conjunto de caracteres que se usara para modificarlos En este caso particular necesita mover 13 posiciones todas las letras siendo a convertida en m, b en n,...

tr {option} {set1} {set2} 
tr A-Za-z N-ZA-Nn-za-m //Rota la posicion de las letras 13 posiciones
tr -c 'as' 'dd'	//Remplazara todo lo demas que no coincida con set1 con set2

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron

  

Reto->10:

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

strings

 Este comando es especialmente util cuando se queire extraer cadenas de un archivo binario, ya que la mayoria de programas para trabajar con archivos de texto suelen fallar porque se encuentran con caracteres no imprimibles. strings extrae cadenas o fragmentos de texto imprimibles

strings {file} 
strings -n {file}	//extrae las cadenas con un numero minimo de caracteres imprimibles
strings {file} | grep == //extrae las cadenas que cuenten con ese patron