elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11
11  Programación / Programación C/C++ / Re: Dibujador de BMP -Error con chkstk_ms()... en: 14 Enero 2016, 21:53 pm
Ah, no entiendo bien eso. Gracias por responderme. Que me aconsejas exactamente?? Colocó el bmp header como un puntero??? y de allí lo grabó?? Es eso lo que me dices??

Disculpa por las molestias, no tengo mucho conocimiento sobre la pila y los punteros, el problema entonces no está en mi lógica de código?? Pregunto por si acaso.

EDIT: 1

Ya hice algo, cambie el array a dinamico y me compilo sin problemas. Eso es lo que entendí. Gracias



Una ultima ayuda. ¿Como traduzco esto

Código
  1. struct bmp_pixel pixeles[WIDTH][HEIGHT];
  2.  

a un array dinámico pero de estructura?? Por favor, ayuda que es lo único que me faltta para empezar a dibujar sobre el Bitmap con total seguridad.

Gracias de antemano
12  Programación / Programación C/C++ / Dibujador de BMP -Error con chkstk_ms()... en: 14 Enero 2016, 21:06 pm
Hola, estoy haciendo un programa que crea archivos bmp de las dimensiones que yo quiera, y lo rellene en gris, y listo. El programa para las dimensiones 100x100 funciona, pero más allá falla algunas veces, principalmente si es más de 1000;

¿Pueden decirme como eliminar ese error que dice SIGSEV en chkstk_ms()??
¿Es mi codigo o sólo el compilador?

Si uso valores en WIDTH Y HEIGHT de 100, todo normal. Si me paso a 10000, se tranca y devuelve en depuracion SIGSEV en un chkstk_ms(), y ni muestra el primer printf. ¿Debo reinstalar el compilador o algo así? Al menos el error debería ser puntual, y no general.

Gracias de antemano.

Código
  1. #include <iostream>
  2. #include <strings.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6. #define WIDTH 10000
  7. #define HEIGHT 10000
  8.  
  9. ///DONE:
  10. ///     Mas o menos crea la imagen.
  11. ///     Cuando se pasa de 1000 ambos, ocurre una falla.
  12. ///     del tipo Violacion de Segmento.
  13.  
  14. ///Error oculto solucionado: No consideraba las iniciales BM (2 bytes) al tamaño
  15. ///del archivo, muy importantes.
  16.  
  17. ///TO-DO:
  18. ///     -Fill the image with interesting data.
  19.  
  20. ///     -El programa lo unico que debe hacer es soportar colorear de azul,
  21. ///     un cuadro de 1000, pixeles.
  22.  
  23. ///     -Hay un problema con lo que significa el manejo del formato, en si mismo
  24. ///     -No puedo exceder los 1000px, debe ser algo relacionado con el padding.
  25.  
  26. ///     -Si grabó tal cual se le asignaron los valores a la matriz,
  27. ///      por tanto el error es de interpretacion. La escritura está bien.
  28. ///      aprender como manejar los bytes y dibujar un cuadrado, o algo así.
  29. ///     -Si soportó el array de bmp_pixeles, pero grabó basura
  30. ///     -Sin embargo, el formato quedó intacto.
  31.  
  32. using namespace std;
  33.  
  34. char bmp_sign[2] = {'B', 'M'}; /// = "BM";
  35.  
  36. struct bmp_format{
  37.  
  38.    unsigned int filesize; /// = filesize
  39.    unsigned short reserved_a; /// = 0;
  40.    unsigned short reserved_b; /// = 0;
  41.    unsigned int start_of_data_image; /// = 54
  42.    unsigned int bitmap_header_size;
  43.  
  44.    unsigned int width;
  45.    unsigned int height;
  46.    unsigned short number_of_planes;
  47.    unsigned short bits_per_pixel;// = 1;
  48.  
  49.    unsigned int compression; /// = 0;
  50.    unsigned int size_of_image; /// = 0;
  51.    unsigned int horizontal_resolution; /// = 0
  52.    unsigned int vertical_resolution; /// = 0;
  53.    unsigned int size_of_color_palette;
  54.    unsigned int counter_of_interesting_colors;
  55. };
  56.  
  57. struct bmp_pixel{
  58.    unsigned char red;
  59.    unsigned char green;
  60.    unsigned char blue;
  61. };
  62.  
  63. int main()
  64. {
  65.    FILE *bmp_file;
  66.    FILE *debug_image;
  67.    FILE *debug_binary;
  68.  
  69.    printf("Abriendo archivos bmp y debug respectivos\n");
  70.    bmp_file = fopen("C:\\output.bmp", "w+b");
  71.    //debug_image = fopen("C:\\image_in_bin.hex", "w+b");
  72.    //debug_binary = fopen("C:\\memory_in_bin.hex", "w+b");
  73.  
  74.    bmp_format bmp_format;
  75.    memset(&bmp_format, 0, sizeof(bmp_format));
  76.    printf("Estableciendo bmp format a NULL para mantenerlo limpio\n");
  77.  
  78.    unsigned int number_of_data_bytes;
  79.  
  80.    ///Initializing data
  81.    ///TO-DO: Design a better method to adjust values than
  82.    ///hard-code it.
  83.  
  84.    bmp_format.start_of_data_image = 54;
  85.    bmp_format.bitmap_header_size = 40;
  86.    bmp_format.width = WIDTH;
  87.    bmp_format.height = HEIGHT;
  88.    bmp_format.number_of_planes = 1;
  89.    bmp_format.bits_per_pixel = 24;
  90.    bmp_format.compression = 0;
  91.    bmp_format.size_of_image = number_of_data_bytes;
  92.    bmp_format.horizontal_resolution = 0;
  93.    bmp_format.vertical_resolution = 0;
  94.    bmp_format.size_of_color_palette = 0;
  95.    bmp_format.counter_of_interesting_colors = 0;
  96.  
  97.    ///TODO: This value must have a formule:
  98.    ///     -bmp_header + ([width * height] * 3 bytes of rgb)
  99.    ///TODO: Use it over hardcoded values.
  100.    number_of_data_bytes = (WIDTH * HEIGHT) * 3;
  101.    bmp_format.filesize = 2 + sizeof(bmp_format) + number_of_data_bytes;
  102.  
  103.    printf("Ya fueron rellenados todos los campos de bmp format!!\n");
  104.  
  105.    fwrite((char *) &bmp_sign, 2, 1, bmp_file);
  106.    fwrite((char *) &bmp_format, sizeof(bmp_format), 1, bmp_file);
  107.  
  108.    printf("Grabando bmp format + la señal de BM\n");
  109.  
  110.    /*struct bmp_pixel pixeles[WIDTH][HEIGHT];
  111. */
  112.  
  113.    char pixeles[WIDTH * HEIGHT * 3];
  114.    for(int i = 0; i < number_of_data_bytes; i++){
  115.        pixeles[i] = 0x50;
  116.    }
  117.  
  118. /*
  119.     ///Clear pixeles and zero it to avoid filter my
  120.     ///system data on memory swap.
  121.     memset(pixeles, 0, sizeof(pixeles));
  122.  
  123.     for(int e = 0; e < WIDTH; e = e + 5){
  124.         for(int i = 0; i < HEIGHT; i++){
  125.             pixeles[i][e].blue = 0xDE;
  126.             pixeles[i][e].red = 0xAD;
  127.             pixeles[i][e].green = 0xff;
  128.         }
  129.     }*/
  130.  
  131.    ///fwrite((char *) pixeles, number_of_data_bytes, 1, debug_image);
  132.    ///fwrite((char *) pixeles, number_of_data_bytes, 1, debug_binary);
  133.    ///fwrite((char *) pixeles, (WIDTH * HEIGHT * 3), 1, bmp_file);
  134.  
  135.    fclose(bmp_file);
  136.    cout << "Dibujador de BMP. En progreso y con futuro." << endl;
  137.    return 0;
  138. }
  139.  
13  Seguridad Informática / Bugs y Exploits / Re: Solución Server Vuln de harry_the_blogger en: 29 Enero 2015, 23:39 pm
Gracias UND3R. Estoy entendiendo eso de que lo usas para evitar los nulos, pero tengo una duda:

¿Como puedes alterar el valor de la direccion, usando una instruccion que trabaja sobre un registro aún no llenado?

No sé si estaré mal, pero veo que cuando se desborda, salta a una instruccion en un módulo (que aparentemente no coincide con mi máquina) para recuperar el valor deseado. No entiendo como eso funciona, si el valor no está precargado en ese registro con el que trabaja la instruccion.

Disculpa por las molestias. Gracias por el generate pattern en Perl, eso de descargar metasploit completo solo por esos dos scripts es algo sin sentido. Me estoy leyendo un sitio de secuirty sift para profundizar.
14  Seguridad Informática / Bugs y Exploits / Re: Solución Server Vuln de harry_the_blogger en: 25 Enero 2015, 00:13 am
Hola, disculpen por demorarme tanto en responder. Estoy dedicando tiempo para entender bien el código, para que no digan que uno no se esfuerza. XD.

Bueno, ahora bien. Yo antes pensaba que sólo era cuestión de insertar la direccion después de los bytes basura, pero ya veo que no. XD, O al menos no en mi máquina.

No entiendo algunas partes sobre la direccion de las funciones ocultas:

  • Por que restas un valor a la direccion??? Sólo por evitar los nulos???
  • De donde sacas ese valor que le restas??? Tengo yo que reemplazarlo y de donde lo calculo?? En mí máquina el exploit sin modificar no trabaja. E incluso prescindiendo de los ROPs tampoco lo hace
  • Como haces para que el valor restado sea revertido y pueda ejecutar las funciones??? Con los ROPs???

Ah, y una última pregunta: ¿Como hiciste para saber que el tamaño del buffer es de 64, si en mi codigo es de 60??? ¿¿¿Quiere decir que si afecta el alignment?? O es que esos bytes son de ebp???

Gracias de antemano, y disculpen por las preguntas.

Eso de ROPs me está mareando. No sé si ese será el problema. Por lo demás, como dije antes, las direcciones de las funciones ocultas coinciden con mi máquina. Estaré apoyandome con otros tutes de internet para ir profundizando.

En cuanto a PERL, ya me leí la documentacion, y entiendo mejor que hace en sí el exploit. Para que no piensen que tengo problemas con la sintaxis del lenguaje.

Bueno, a seguir echando cabeza.

15  Seguridad Informática / Bugs y Exploits / Re: Solución Server Vuln de harry_the_blogger en: 23 Enero 2015, 06:15 am
Gracias a todos por sus respuestas. Pero sigo teniendo problemas. No entiendo que estoy haciendo mal.

Comprobé las direcciones de las funciones ocultas, y coinciden con las de mi máquina. No debería haber problema.

Ahora una pregunta: Esa variable $eip = pack('V', 0x7c87f30e) puedo sustituirla por la funcion oculta directamente??? ¿Como puedo obtener yo la direccion de un ROP??

Es que estoy teniendo problemas con los exploits sencillos, y entender eso de ROPs me está costando porque no tengo experiencia previa. ¿Será que puedo explotarlo sin usar ROPs??? Creo que mi sistema tiene DEP desactivado por defecto. No habría problema, verdad??? Intenté eliminar los ROPs, pero falló igual.

Podrías explicarme brevemente como encontrar eso de ROPs??? Solo por encima, yo profundizo con internet a partir de lo que me digan.

Ah, y porque para rellenar se necesitan 64 bytes, si en mi codigo es de 60??? Estaba afectando el alignment???

Gracias por su ayuda a todos. Perdon por la preguntadera. Esto de explotar es díficil, al menos en principio. Y de paso el bachillerato no me deja tiempo para practicar. XD
16  Seguridad Informática / Bugs y Exploits / Re: Solución Server Vuln de harry_the_blogger en: 21 Enero 2015, 01:11 am
Gracias UND3R.

Oye, y esos valores son indepedientes de la máquina o hay que recalcularlos??? Y esos de ROPs hay que sacarlos de nuevo???

Lo probé y no salió como sale en tu captura de pantalla. ¿Que he podido hacer mal??? Disculpen por hacer tantas preguntas, es que soy nuevo en esto de exploits y no he podido avanzar mucho.

Me estaré leyendo la documentacion de perl para entender bien el exploit.

Ah, otra pregunta: ¿Por que siempre los exploits los hacen en Perl o en Python?? ¿Cual de los dos es mejor?? Yo por lo menos prefiero Perl, aunque si hay otro mejor me cambio.

Ah, y mi XP pareciera no tener DEP. ¿Eso es malo?? Sé que en un entorno real debería estar, pero como estoy aprendiendo no afecta, verdad???

Gracias a todos por su ayuda.
17  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 18 Enero 2015, 06:56 am
https://mega.co.nz/#!utF2CDyD!FUKZQAX4xJG7b0Fov_4dOtj2ExvYwJG-hN2891wuu7c

Aqui está. Disculpen por subirlo tan tarde. Aún no he podido encontrar la falla. Aquí está por si ha alguien le interesa. Gracias de antemano.
18  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 10 Enero 2015, 01:08 am
Gh057:

No sabrás alguna forma de hacer funcionar la shellcode?? Estoy trabajando en esto y me parece dificil. Ah, y en serio bloquean desde gogle??? Es un archivo que no está listado en internet, solo accesible por links.

No creo que cause algun problema, bueno, si alguna cosa más tarde lo actualizaré y subiré a Mega. Gracias por la advertencia. Puede el moderador bloquearlo?? Alguien me lo pidió.
19  Seguridad Informática / Bugs y Exploits / Re: ayuda con un xploit.exe en: 9 Enero 2015, 01:31 am
Disculpa, no soy muy bien entrenado en esto, pero ¿Estás tratando de espiar una aplicacion externa? Estuve mirando un poco, y encontré esto: (en inglés).

http://stackoverflow.com/questions/352236/reading-from-a-text-field-in-another-applications-window

Básicamente dice una rutina para copiar un texto dado un HANDLE o algo así, y pegarlo en un buffer de otra aplicacion.

Espero que te sirva.
20  Seguridad Informática / Bugs y Exploits / Re: El compiler pareciera agregar algo entre variables de la stack desviando return en: 8 Enero 2015, 15:09 pm
OK. Lo vas a revisar?? Bien. Bueno, ahí te lo envío.

Lo puse en Google drive

https://drive.google.com/file/d/0Bxshgu4STp1aUXpsYmMySWhqS3c/view?usp=sharing

Pensaba pornerlos en uno de esos sitios anonimos, pero tienen virus. Mejor que lo haya puesto en Google drive, o no??

Mientras tanto seguiré leyendo por internet a ver si consigo cuál es el problema.

Gracias por tu ayuda.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines