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