Resolviendo CrackMe con Pipes

  • 1 Respuestas
  • 2912 Vistas

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

Desconectado rollth

  • *
  • Ex-Staff
  • *****
  • Mensajes: 876
  • Actividad:
    0%
  • Reputación 16
  • El conocimiento es libre.
  • Twitter: @RoloMijan
    • Ver Perfil
    • Whateversec
    • Email

Resolviendo CrackMe con Pipes

  • en: Mayo 30, 2017, 11:26:23 pm
Muy buenas a todos Underc0ders!

Hoy voy a hacer una prueba de concepto de una resolución de un posible Crackme usando Pipes, esta es una "funcionalidad" que nos aportan los sistemas operativos que nos sirve para comunicar varios procesos entre ellos.

Bueno vamos a empezar ejecutando el crackme y viendo que nos responde.


Como podemos ver no nos pide una respuesta así que supondremos que la contraseña hay que pasarla como valor al iniciar el programa, además parece que la contraseña es en formato numérico, por lo tanto lo que vamos a hacer es un programa en C que a través de Pipes vaya lanzando números hasta que de con la contraseña correcta.

Código: C
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int prueba(int valor){
  5.    
  6.    // Ruta del programa y otros valores
  7.  
  8.    char programa[100] = "cmd /c \"C:\\Users\\roll_\\Desktop\\CrackMe 1.0.exe\" ";
  9.    char numero[10];
  10.    You are not allowed to view links. Register or Login(valor ,numero, 10);
  11.    
  12.    You are not allowed to view links. Register or Login(programa, numero);
  13.    
  14.    char respuesta[10024];
  15.    
  16.    // Borro el buffer
  17.    
  18.    You are not allowed to view links. Register or Login(respuesta, 0, sizeof(respuesta));
  19.    
  20.    // Atributos necesarios
  21.  
  22.    SECURITY_ATTRIBUTES sa;
  23.    STARTUPINFO si;
  24.    PROCESS_INFORMATION pi;
  25.  
  26.    // Punteros de lectura y escritura
  27.  
  28.    void * lectura;
  29.    void * escritura;
  30.    
  31.    // Creamos pipe e iniciamos el proceso
  32.    
  33.    sa.bInheritHandle = TRUE;
  34.    
  35.    CreatePipe(&lectura, &escritura, &sa, 0);
  36.    
  37.    si.dwFlags = STARTF_USESTDHANDLES;
  38.    si.hStdOutput = escritura;
  39.    si.hStdError = escritura;
  40.    si.hStdInput = lectura;
  41.    
  42.    CreateProcessA(0, programa, 0, 0, TRUE, 0, 0, 0, &si, &pi);;
  43.    
  44.    // Comprobamos si se ha acertado
  45.  
  46.    ReadFile(lectura, respuesta, 10024, 0, 0);
  47.    
  48.    if(You are not allowed to view links. Register or Login(respuesta, "Password Incorrecta") != 0 && You are not allowed to view links. Register or Login(respuesta, ("Introducir valor numerico"))){
  49.       You are not allowed to view links. Register or Login("%s %d\n", respuesta, valor);
  50.       return 1;
  51.    }
  52.    You are not allowed to view links. Register or Login("%s %d\n", respuesta, valor);
  53.    return 0;
  54.    
  55. }
  56.  
  57. int main(){
  58.    
  59.    // Bucle para hacer la prueba
  60.    
  61.    int i = 0;
  62.    
  63.    while(prueba(i) != 1){
  64.      
  65.       i++;
  66.      
  67.    }
  68.    
  69.    Sleep(100000);
  70.    
  71. }

Tras ejecutar el programa veremos que en pocos segundos nos sacará la contaseña.


Es un concepto sencillo pero creo que puede ser interesante, se podría ampliar más pero creo que queda claro el concepto.

Por último dejo el código del crackme :D

Código: C
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]){
  4.    
  5.    int password2;
  6.    int password = 725;
  7.    
  8.    password2 = You are not allowed to view links. Register or Login(argv[1]);
  9.    
  10.    if (password2 == 0){
  11.       You are not allowed to view links. Register or Login("Introducir valor numerico");
  12.    }
  13.    else if(password == password2){
  14.       You are not allowed to view links. Register or Login("Password Correcta");
  15.    }
  16.    else{
  17.       You are not allowed to view links. Register or Login("Password Incorrecta");
  18.    }
  19.  
  20. }


También me pueden seguir en Twitter si les hace ilusión: You are not allowed to view links. Register or Login

Saludos.


« Última modificación: Abril 01, 2018, 10:20:32 am por rollth »

Rollth
Buen hacker mejor persona.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1967
  • Actividad:
    43.33%
  • Country: es
  • Reputación 16
    • Ver Perfil

Re:Resolviendo CrackMe con Pipes

  • en: Junio 30, 2017, 04:51:31 pm
La fuerza bruta a veces es la solución de muchos problemas :D

Gran aporte Rolo, seguro que a muchos les sirve

Un saludo


 

Despiezando Crackme Underc0de

Iniciado por rollth

Respuestas: 0
Vistas: 2140
Último mensaje Octubre 25, 2017, 10:38:20 pm
por rollth
Resolviendo el Code Invite de Hack The Box

Iniciado por ANTRAX

Respuestas: 1
Vistas: 9966
Último mensaje Octubre 26, 2018, 10:05:03 pm
por crist12ben
Resolviendo el CTF: RickdiculouslyEasy: 1 @ VulnHub.com

Iniciado por shadkz.

Respuestas: 2
Vistas: 4221
Último mensaje Noviembre 03, 2017, 08:29:17 am
por shadkz.
Resolviendo Crackme con Retdec

Iniciado por rollth

Respuestas: 0
Vistas: 4252
Último mensaje Enero 05, 2018, 11:59:08 am
por rollth