Desafio #11 - Viernes Negro

Iniciado por xyz, Diciembre 01, 2017, 01:15:27 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 01, 2017, 01:15:27 AM Ultima modificación: Diciembre 03, 2017, 10:09:10 PM por xyz
Bienvenidos Underc0ders !!



En esta oportunidad traemos nuevos retos y sorpresas !

El que gane mayor cantidad de desafios de Viernes Negros en el mes de Diciembre, tendrá un premio de 10 dólares o su equivalente por envío Paypal.

¿Quienes pueden participar?  TODOS.

Quienes participan por el premio, todo UNDERC0DE EXCEPTO:


  • Administrador
  • Co-Administradores
  • Xyz

En el foro, encontrarán las herramientas logicas necesarias para resolver los wargames.

Pueden utilizar sitios externos y aplicaciones propias para llegar a la solución.


Condiciones para participar por el premio:


  • Resolver todos los desafios propuestos por viernes (Actualización).
  • Quien resuelva mayor cantidad de retos, será el ganador (Actualización).
  • De haber empate, se tendrá en cuenta las soluciones de los desafíos.
  • Enviar por MP las resoluciones o enlaces de capturas de pantalla.
  • En lo posible, mandar todas las respuestas en un solo MP y el procedimiento utilizado.
  • O pueden enviar soluciones a medida que vayan encontrando.



Aclaraciones.


  • Se tendrá en cuenta el órden de recepción de los MP con las soluciones correctas para anunciar al ganador.
  • Asunto del MP a enviar: "Viernes Negro N° - Desafios (ej. 1,2,3,4,5 o 1,2,3)".
  • Las preguntas/respuestas, que suban en éste post antes de finalizar el Domingo, serán eliminadas.
  • No se brindará ayuda.
  • El ganador@, deberá explicar como resolvió cada desafio.
  • Si otro participante quiere mostrar soluciones alternativas, puede hacerlo luego de que el item anterior sea expuesto.
  • Luego de ello, podrán utilizar el post, para realizar preguntas.


Actualización.

  • El ganador del premio será aquel que resuelva mas retos de viernes negros.
  • En caso de haber empate, definirán por las soluciones expuestas.




Si en algún reto, notan algo erroneo, envíen por MP la solución o corrección (los que han enviado, está correcto)




SE ANUNCIARA AL GANADOR EN EL TRANSCURSO DE LA PRIMER SEMANA DE ENERO DEL 2018.



Reto 1. Hallar el flag.
Código: php
Hash: ED9D3D832AF899035363A69FXD53CD3BE8F715Y01CZ


Reto 2. Obtener el mensaje
Código: php
RW4gTGEgY2ltQSBkZSBsYSBjb2xpbmEgR3VhcmRhIHVuYSBkb25jRWxsYSB1TiBhbXVsZVRvIGFuY0VzdHJhbC4gRXMgdW4gdGFsaVNtYW4gcVVlIGlOdm9jYSBhIE1hb2toYWksIHVuIEFudGlndW8gZ3VhcmRpYW4gZGVMIGJvcXVlIFdhZHVkLCBsbEFtYWRvIGEgcFJvdGVnZXIgc3VzIHJFbW90b3MgZG9taW5pb3Mu


Reto 3. Decifrar el mensaje.
Código: php
3334 51115411 11 431542 414515 3215 511543141143 22114434 353442 312415124215


Reto 4. Encontrar el flag.



Enlace de la imagen: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Reto 5. Dado el siguiente string, obtener unicamente los números.

  • Crear un algoritmo y programarlo en el lenguaje que te sea cómodo.
  • Enviar la solución en una captura de pantalla compuesta por: Algoritmo y Output

Ejemplo:
Código: php
INPUT: A1B2C3D4E5
OUTPUT: 12345


String:
Código: php
kn8XontEa4EdJvwtWqHun6QRDBlOdl5cGLoLuuMneBDRzhONWDkBGgCDIvaEhZfq11Xf7t1vsQXmuSnjuUJ2YFAvbAaOlpf65OiwBGhvey3h4cIUTZkhGemMI5IRyoyXPX7tMBwdQmFC40Qq0rlJbuhojwDH9wy86DiU5c48ECg2ZVbGosQdOGm28ncpcEBZynFkIKnKFJPbMZAjCrLejqHZTwhgReKI9I1JBct4J9gvuOqyG7VOoQsNrRCgZ3zmOHJ7znUwLz2GcBoQmFXl6FzQnMtVEzUB5Gd4cU3K3k8g





Que comiencen los juegos !

Diciembre 01, 2017, 01:18:27 AM #1 Ultima modificación: Diciembre 03, 2017, 10:14:44 PM por xyz
¿ Quienes estan participando ?


Diciembre 01, 2017, 01:19:45 AM #2 Ultima modificación: Diciembre 04, 2017, 11:49:19 AM por xyz
Tabla de puntos:


  • EddieFog - 4 puntos.
  • Once - 4 Puntos.
  • Lechugo - 4 Puntos.
  • Rollth - 4 Puntos.
  • Andrey - 4 Puntos.
  • Sadfud - 3 Puntos.
  • Mortal_Poison - 2 puntos.
  • Rush - 2 puntos.

Se enviará un MP a cada usuario, indicando que retos debe explicar.

Diciembre 04, 2017, 12:31:26 PM #3 Ultima modificación: Diciembre 04, 2017, 02:55:38 PM por EddiFog
Hola muchachos en esta oportunidad estare explicando los games 3,4 y 5 :D

Game 3
Este se resolvia de una manera muy sencilla, de hecho ya se usó el mismo método en un viernes negro anterior pero para los que no sepan, este game se resuelve con la famosa tabla de polibio para codificar letras en numeros agrupandolas de pares dentro de una tabla de 5 x 5.
Esta es la famosa tabla en cuestión:








12345
1ABCDE
2FGHI,JK
3LMNOP
4QRSTU
5VWXYZ
Ahora tendremos que separar el mensaje en pares, quedaría algo así:
(33)(34) (51)(11)(54)(11) (11) (43)(15)(42) (41)(45)(15) (32)(15) (51)(15)(43)(14)(11)(43) (22)(11)(44)(34) (35)(34)(42) (31)(24)(15)(12)(42)(15)
Se descifra fila y columna, tomaremos la primera palabra como ejemplo.
(33) En este caso seria fila 3 y columna 3 lo que nos da la letra N
(34) En este caso seria fila 3 y columna 4 lo que nos da la letra O

Si nos ponemos a decifrar par por par, nos queda este mensaje:
NO VAYA A SER QUE ME VENDAS GATO POR LIEBRE




Game 4
Para resolver este solo falta tener buen ojo  ;D ya que la solución se encontraba en la parte superior izquierda de la imagen, precisamente en este lado...
Entonces la solución para este game sería: BUSCAME Y ME ENCONTRARAS




Game 5
Al tratarse de programación, adjunto la imagen de mi código para poder explicarlo :D

Bueno, mi código esta hecho en java y la verdad que es muy simple, lo primero que se hace es leer la cadena tipo String que se va a convertir y esta cadena se almacena en la variable "cad" (previamente declarada), luego se usa el método "toCharArray" para pasar esa cadena a un arreglo de tipo char y se guardan caracter por caracter, todos separados, gracias a esto es que luego se hace un recorrido for each a este arreglo pero con una variable tipo char indicando que tipo de dato es el que vamos a buscar y que nos servira al momento de establecer una condición if usando el metodo "isDigit" (un método que devuelve un valor boolean) y pasandole nuestra variable tipo char, y por último si encontró un dígito (si devolvió True) lo que hace es reportarlo, de esta manera se imprimen todos los números que están en la cadena.




Gracias por leer :D
El hacking es un privilegio.

Reto: 1

La pista nos dice claramenjte que es un hash, así que lo primero es contar el número de caracteres para hcernos una idea de qué tipo de hash es. El resultado, es que hay 43 caracteres. Como no conozco ningún hash de 43 caracteres, el más cercano es sha1 con 40. Inspeccioné el hash buscando información inyectada. (es fácil saberlo, porque en el caso de ser sha1, todos los caracteres deben ser hexadecimales 0-9A-F)
Al final del hash, se encuentran los caracteres XYZ que una vez eliminados dan una longitud de hash de 40 caracteres hexadecimales. El siguiente paso es pasar este hash por algtuna base de datos online. En mi caso elegí No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El resultado:    shadow

Reto: 2

AL ver este reto lo primero que pensé fue en usar de primer mano Base64, el resultado:

CitarEn La cimA de la colina Guarda una doncElla uN amuleTo ancEstral. Es un taliSman qUe iNvoca a Maokhai, un Antiguo guardian deL boque Wadud, llAmado a pRoteger sus rEmotos dominios.

Lo que llamó mi atención fueron esos caracteres en mayúscula, que al aislarlos nos dan el mensaje: ELAGENTEESUNMALWARE

Reto: 5

Yo usé Python para solucionarlo:


La solución salió en una sola línea, lo que hago es simplemente filtrar del mensaje sólo los caracteres que corresponden a un número (función filter) este filtrado corresponde a una lista que convierto a un texto usando el método join de los strings en Python.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Aquí mis soluciones:




Nos dan el siguiente hash: ED9D3D832AF899035363A69FXD53CD3BE8F715Y01CZ

Si nos fijamos, aparenta ser alguno de los hashes más típicos, MD5, SHA1, etc. Pero hay algunos caracteres que no son hexadecimales. Por lo que los borraremos del String e intentaremos crackearlo con: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta





Nos dan el siguiente String:
RW4gTGEgY2ltQSBkZSBsYSBjb2xpbmEgR3VhcmRhIHVuYSBkb25jRWxsYSB1TiBhbXVsZVRvIGFuY0VzdHJhbC4gRXMgdW4gdGFsaVNtYW4gcVVlIGlOdm9jYSBhIE1hb2toYWksIHVuIEFudGlndW8gZ3VhcmRpYW4gZGVMIGJvcXVlIFdhZHVkLCBsbEFtYWRvIGEgcFJvdGVnZXIgc3VzIHJFbW90b3MgZG9taW5pb3Mu

Podemos que es base64, así que haremos el decode aquí:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El resultado es el siguiente:
En La cimA de la colina Guarda una doncElla uN amuleTo ancEstral. Es un taliSman qUe iNvoca a Maokhai, un Antiguo guardian deL boque Wadud, llAmado a pRoteger sus rEmotos dominios.

De aquí si nos fijamos hay mayusculas donde no debería haberlas, las juntamos todas:
EL AGENTE ES UN MALWARE




Solo hay que echar un buen ojo ya que arriba a la izquierda pone: BUSCAME Y ME ENCONTRARAS





Yo he usado este código en C.

Código: c
#include <stdio.h> 
#include <string.h>
#include <ctype.h>

typedef struct{
   char str[2000];
}string;

void obtenerNumeros(string primero){
   int i;
   for(i = 0; i <= strlen(primero.str); i++){
      if(isdigit(primero.str[i]) != 0){
         printf("%c", primero.str[i]);
      }
   }
}

int main(){
   string pr;
   printf("INPUT: ");
   scanf("%s", &pr.str);
   printf("\nOUTPUT: ");
   obtenerNumeros(pr);
}


Basicamente comprueba caracter por caracter si es numérico con "isdigit()" y en caso de que lo sea lo imprime. Este es el resultado:

84651171265345740098654822891497372654338



Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Buenas

Dejo la solucion al quinto, es muy parecido al de EddiFog, tambien en java pero sin hacer una conversion a array



Código: java
public class algoritmo {

public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "kn8XontEa4EdJvwtWqHun6QRDBlOdl5cGLoLuuMneBDRzhONWDkBGgCDIvaEhZfq11Xf7t1vsQXmuSnjuUJ2YFAvbAaOlpf65OiwBGhvey3h4cIUTZkhGemMI5IRyoyXPX7tMBwdQmFC4"
+ "0Qq0rlJbuhojwDH9wy86DiU5c48ECg2ZVbGosQdOGm28ncpcEBZynFkIKnKFJPbMZAjCrLejqHZTwhgReKI9I1JBct4J9gvuOqyG7VOoQsNrRCgZ3zmOHJ7znUwLz2GcBoQmFXl6FzQnMtVEzUB5Gd4cU3K3k8g", end = "";
for (int i = 0; i < str.length(); i++) if (Character.isDigit(str.charAt(i))) end +=str.charAt(i);
System.out.println(end);
}
}


Un saludo y enhorabuena a los ganadores!!
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

Mi solucion al 5 fue la siguiente:

Primero el codigo hecho en python...

Código: php
import re
cadena= "kn8XontEa4EdJvwtWqHun6QRDBlOdl5cGLoLuuMneBDRzhONWDkBGgCDIvaEhZfq11Xf7t1vsQXmuSnjuUJ2YFAvbAaOlpf65OiwBGhvey3h4cIUTZkhGemMI5IRyoyXPX7tMBwdQmFC40Qq0rlJbuhojwDH9wy86DiU5c48ECg2ZVbGosQdOGm28ncpcEBZynFkIKnKFJPbMZAjCrLejqHZTwhgReKI9I1JBct4J9gvuOqyG7VOoQsNrRCgZ3zmOHJ7znUwLz2GcBoQmFXl6FzQnMtVEzUB5Gd4cU3K3k8g"
cadena = re.sub("\D", "", cadena)
print cadena


Ahora lo que nos interesa, como funciona...

import re  Para importar la libreria de manipulacion de strings, nombre completo Regex...

cadena = "kn8Xo... Le damos el valor a la cadena...

re.sub("/D","",cadena) El modulo re trabaja con funciones regulares y de cadena, la funcion sub encuentra las coincidencias en un patron y las reemplaza por una cadena predefinida, en los siguientes dos parametros el primero es la cadena sobre la que se pasa a tomar su lugar y el segundo es la cadena que tomara su lugar, esto en la variable del tercer parametro "cadena", en este caso "\D" hace referencia a caracteres que no sean numeros y se reemplazan por "" ocea nada, en la cadena original...

print (cadena) Imprime el resultado el cual es el siguiente:

84651171265345740098654822891497372654338




"Es un mundo brutal y peligroso el que hay allá afuera... Pero encontré mi camino. El caos es mi hogar, y me aseguraré de que no escapes de el"...

"Solo se necesita una excusa para cambiar el mundo"

Buenos dias! Me toco explicar el reto 1, 3 y 5, empecemos:

RETO 1:
Bueno lo mismo que ya dijeron por arriba, al ver el hash empece a inspeccionarlo, y note que tenia caracteres que no eran hexadecimales (X,Y,Z) , por lo que una vez eliminados del hash original, use No tienes permitido ver los links. Registrarse o Entrar a mi cuenta para ver si lo podia desencriptar y PUM, el resultado arrojado fue: shadow.


RETO 3:
Bueno este reto resulto sencillo, ya que al verlo me recordo uno que hicimos en un viernes negro anterior, lo primero que pense fue que se trataba de un texto cifrado con el cuadrado de polibio, que no es mas que una tabla 5x5 donde cada letra se cifra primero con el numero de la fila y luego con el de la columna.
CUADRADO DE POLIBIO
Por ejemplo si tomamos la letra V, seria 51.

Teniendo en cuenta el codigo que nos dieron:
Código: php
3334 51115411 11 431542 414515 3215 511543141143 22114434 353442 312415124215


Nos da el siguiente mensaje:
NO VAYA A SER QUE ME VENDAS GATO POR LIEBRE


RETO 5:
Bueno para este reto hice un programita en C muy simple:

Muy facil de interpretar, tenemos una funcion tomanumeros que va tomando todas las posiciones de nuestro string, y los va comparando para ver si son numericos (0x30 - 0x39 valores del 0 al 9 segun la tabla de ASCII), y que caso de ser positivo los va guardando en otro subarreglo, que luego seria justamente lo que nos interesa mostrar luego en nuestro OUTPUT.
Tambien se podria haber mostrado la cantidad de numero que tenia el string, aprovechando el mismo contador de nuestro subarreglo, pero como no era lo que pedia el reto, decidi dejarlo como comentario.

Saludos!