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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Error en Buffer Overflow
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Error en Buffer Overflow  (Leído 19,688 veces)
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Error en Buffer Overflow
« en: 27 Febrero 2014, 17:43 pm »

Buenas gente.

Verán, estaba siguiendo el tutorial de Rojodos sobre buffer overflow (http://www.todopsp.com/foros/showthread.php?t=23953  , hay que darle a "Premum Download" y se descarga), y... claro, sé ensamblador y entiendo lo que dice, pero a la hora de poner muchas AAAAAAs (90 As por ejemplo) con el CMD y darle a "más detalles", el offset no es "41414141",  y no entiendo el porqué. He probado a ejecutarlo en un Win8 físico y en una máquina virtual con WinXP Professional SP1 (que no tiene ni siquiera el DEP, al ser SP1), y a debuggearlo con OllyDbg 1.10 y con Immunity Debugger, pero me da el mismo resultado.

En concreto, cuando intento debuggear con Olly sin argumentos, el exit code es 0, y cuando le pongo 90 As y le doy a F9 (run), el exit code es C0000409

He compilado el código fuente desde la consola de MVC++ 2005 (cl.exe /TC vuln1.c).
Subo el ejecutable por si queréis echarle un vistazo: http://bayfiles.net/file/17EMR/HuI4La/vuln1.exe


El código compilado es el siguiente:
Código
  1. /* vuln1.c por Rojodos */
  2.  
  3. #include <stdio.h> // librería stdio.h, funciones básicas de Entrada/Salida
  4.  
  5. int main (int argc, char **argv) // La función "principal" del programa función
  6. {
  7. char buffer[64]; //Declaramos un array con 64 bytes de espacio
  8.  
  9. if (argc < 2) // Si los argumentos son menores que 2...
  10. {
  11. printf ("Introduzca un argumento al programa\n"); //Printeamos
  12. return 0; // y retornamos 0 a la función main, y el programa acaba
  13. }
  14.  
  15. strcpy (buffer, argv[1]); // Aqui es donde esta el fallo.
  16.  
  17. return 0; // Devolvemos 0 a main, y el programa acaba.
  18. }


He probado a seguir el tutorial de Coreland, y con el programa ya compilado del PDF nº 1 sí me funciona lo de modificar el EIP, pero si lo compilo yo no, y no sé por qué.

Gracias de antemano :)
« Última modificación: 27 Febrero 2014, 17:58 pm por Lodos76 » En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #1 en: 27 Febrero 2014, 22:16 pm »

Tienes que dar más datos, que observas en la pila, esta el buffer de Aes por algun lado? Pon un bp en strcpy y tracea.
En línea

01001010 01100001 01110110 01101001 01100101 01110010
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #2 en: 27 Febrero 2014, 23:01 pm »

Tienes que dar más datos, que observas en la pila, esta el buffer de Aes por algun lado? Pon un bp en strcpy y tracea.

Vale, hay un problema aquí:
Abro Olly
Pongo 90 As y Restart
A debuggear!

CommandBar -> BP strcpy (no da ningún error)
Pero no encuentro por el ejecutable la llamada a msvcrt.strcpy o a user32.strcpy, en cambio, cuando compilaba con GCC (Cygwin) sí que me saltaba a una biblioteca suya y a la función strcpy.





Pero bueno, vayamos a la ejecución de código:
Le doy a run y sale esto , PUES NADA, a debuggear paso por paso.

Sigo ejecutando y salen en la pila las As: , sigo ejecutando y me encuentro con esto: , aunque luego en la pila sólo están las 90 que yo puse). Ya estoy más cerca. Pero sigo ejecutando y me encuentro con que ya no están en la pila las As y con IsDebuggerPresent!! pues como no veo saltos condicionales después del call, sustituyo la función por NOPs y continuo ejecutando, y ahora se pushea el ExitCode y se llama a TerminateProcess, y finaliza con el ExitCode que posteé en la entrada del tema (C0000409),

Salu2
« Última modificación: 27 Febrero 2014, 23:10 pm por Lodos76 » En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #3 en: 28 Febrero 2014, 00:15 am »

Has pasado la función strcpy traceando? me parece que si, pon una imagen justo en el call del olly antes de entrar a la función strcpy.
En línea

01001010 01100001 01110110 01101001 01100101 01110010
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #4 en: 28 Febrero 2014, 10:31 am »

Has pasado la función strcpy traceando? me parece que si, pon una imagen justo en el call del olly antes de entrar a la función strcpy.

Es lo que te comentaba, no aparece la función como una llamada, no sé si es que se implementa en el ejecutable como código o qué...

Sólo he encontrado interesante la  función kernel32.LCMapStringA.

Click derecho --> Search for --> All intermodular calls
Código:
Found intermodular calls
Address    Disassembly                               Destination
00401437   CALL vuln1.0040390C                       (Initial CPU selection)
00408A40   CALL DWORD PTR DS:[<&KERNEL32.CloseHandl  kernel32.CloseHandle
00409306   CALL ESI                                  kernel32.CloseHandle
004092E3   CALL DWORD PTR DS:[<&KERNEL32.CreateFile  kernel32.CreateFileA
00402642   CALL DWORD PTR DS:[<&KERNEL32.ExitProces  kernel32.ExitProcess
0040734C   CALL DWORD PTR DS:[<&KERNEL32.FlushFileB  kernel32.FlushFileBuffers
00403076   CALL DWORD PTR DS:[<&KERNEL32.FreeEnviro  kernel32.FreeEnvironmentStringsA
0040308D   CALL DWORD PTR DS:[<&KERNEL32.FreeEnviro  kernel32.FreeEnvironmentStringsA
00403033   CALL DWORD PTR DS:[<&KERNEL32.FreeEnviro  kernel32.FreeEnvironmentStringsW
00404255   CALL DWORD PTR DS:[<&KERNEL32.GetACP>]    kernel32.GetACP
0040137A   CALL DWORD PTR DS:[<&KERNEL32.GetCommand  kernel32.GetCommandLineA
00406D57   CALL DWORD PTR DS:[<&KERNEL32.GetConsole  kernel32.GetConsoleCP
00406D3B   CALL DWORD PTR DS:[<&KERNEL32.GetConsole  kernel32.GetConsoleMode
00408BFA   CALL DWORD PTR DS:[<&KERNEL32.GetConsole  kernel32.GetConsoleOutputCP
00404001   CALL DWORD PTR DS:[<&KERNEL32.GetCPInfo>  kernel32.GetCPInfo
004042DB   CALL DWORD PTR DS:[<&KERNEL32.GetCPInfo>  kernel32.GetCPInfo
00408FB2   CALL ESI                                  kernel32.GetCPInfo
00408FCB   CALL ESI                                  kernel32.GetCPInfo
0040221F   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentProcess
004025DB   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentProcess
0040394D   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentProcessId
00403577   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentThreadId
0040383C   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentThreadId
00403955   CALL DWORD PTR DS:[<&KERNEL32.GetCurrent  kernel32.GetCurrentThreadId
00403045   CALL DWORD PTR DS:[<&KERNEL32.GetEnviron  kernel32.GetEnvironmentStringsA
00402F83   CALL EDI                                  kernel32.GetEnvironmentStringsW
004031C7   CALL DWORD PTR DS:[<&KERNEL32.GetFileTyp  kernel32.GetFileType
00403263   CALL DWORD PTR DS:[<&KERNEL32.GetFileTyp  kernel32.GetFileType
00408F44   CALL DWORD PTR DS:[<&KERNEL32.GetLocaleI  kernel32.GetLocaleInfoA
0040298B   CALL DWORD PTR DS:[<&KERNEL32.GetModuleF  kernel32.GetModuleFileNameA
00402ED8   CALL DWORD PTR DS:[<&KERNEL32.GetModuleF  kernel32.GetModuleFileNameA
00402613   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
0040335D   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
004033C9   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
00403474   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
004036D9   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
00405403   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH  kernel32.GetModuleHandleA
00404232   CALL DWORD PTR DS:[<&KERNEL32.GetOEMCP>]  kernel32.GetOEMCP
00402623   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd  kernel32.GetProcAddress
0040336D   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd  kernel32.GetProcAddress
004033D9   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd  kernel32.GetProcAddress
0040349D   CALL EBX                                  kernel32.GetProcAddress
004034AD   CALL EBX                                  kernel32.GetProcAddress
004036FB   CALL ESI                                  kernel32.GetProcAddress
00403708   CALL ESI                                  kernel32.GetProcAddress
00403715   CALL ESI                                  kernel32.GetProcAddress
00403722   CALL ESI                                  kernel32.GetProcAddress
00405413   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd  kernel32.GetProcAddress
004054F7   CALL ESI                                  kernel32.GetProcAddress
0040129B   CALL EBX                                  kernel32.GetProcessHeap
004030B1   CALL DWORD PTR DS:[<&KERNEL32.GetStartup  kernel32.GetStartupInfoA
00402A5B   CALL DWORD PTR DS:[<&KERNEL32.GetStdHand  kernel32.GetStdHandle
00403251   CALL DWORD PTR DS:[<&KERNEL32.GetStdHand  kernel32.GetStdHandle
00407932   CALL DWORD PTR DS:[<&KERNEL32.GetStringT  kernel32.GetStringTypeA
004077CE   CALL DWORD PTR DS:[<&KERNEL32.GetStringT  kernel32.GetStringTypeW
004078BD   CALL DWORD PTR DS:[<&KERNEL32.GetStringT  kernel32.GetStringTypeW
00403941   CALL DWORD PTR DS:[<&KERNEL32.GetSystemT  kernel32.GetSystemTimeAsFileTime
0040395D   CALL DWORD PTR DS:[<&KERNEL32.GetTickCou  kernel32.GetTickCount
004012BF   CALL DWORD PTR DS:[<&KERNEL32.GetVersion  kernel32.GetVersionExA
004038C3   CALL DWORD PTR DS:[<&KERNEL32.HeapCreate  kernel32.HeapCreate
004038F9   CALL DWORD PTR DS:[<&KERNEL32.HeapDestro  kernel32.HeapDestroy
004053AE   CALL DWORD PTR DS:[<&KERNEL32.Initialize  kernel32.InitializeCriticalSection
00403642   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedDecrement
004041C0   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedDecrement
004044A6   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedDecrement
0040455D   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedDecrement
004047C1   CALL EDI                                  kernel32.InterlockedDecrement
004047CE   CALL EDI                                  kernel32.InterlockedDecrement
004034CF   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedIncrement
004041EB   CALL DWORD PTR DS:[<&KERNEL32.Interlocke  kernel32.InterlockedIncrement
004044CB   CALL EDI                                  kernel32.InterlockedIncrement
00404737   CALL EDI                                  kernel32.InterlockedIncrement
00404744   CALL EDI                                  kernel32.InterlockedIncrement
004021F0   CALL DWORD PTR DS:[<&KERNEL32.IsDebugger  kernel32.IsDebuggerPresent
00407662   CALL ESI                                  kernel32.LCMapStringA
00407721   CALL DWORD PTR DS:[<&KERNEL32.LCMapStrin  kernel32.LCMapStringA
004073EC   CALL DWORD PTR DS:[<&KERNEL32.LCMapStrin  kernel32.LCMapStringW
00407512   CALL ESI                                  kernel32.LCMapStringW
0040754B   CALL ESI                                  kernel32.LCMapStringW
004075AF   CALL DWORD PTR DS:[<&KERNEL32.LCMapStrin  kernel32.LCMapStringW
004054D8   CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar  kernel32.LoadLibraryA
0040748A   CALL ESI                                  kernel32.MultiByteToWideChar
00407845   CALL ESI                                  kernel32.MultiByteToWideChar
00408CD9   CALL DWORD PTR DS:[<&KERNEL32.MultiByteT  kernel32.MultiByteToWideChar
00408D47   CALL DWORD PTR DS:[<&KERNEL32.MultiByteT  kernel32.MultiByteToWideChar
00403969   CALL DWORD PTR DS:[<&KERNEL32.QueryPerfo  kernel32.QueryPerformanceCounter
0040129E   CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>  ntdll.RtlAllocateHeap
00405BF2   CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>  ntdll.RtlAllocateHeap
00405FC9   CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>  ntdll.RtlAllocateHeap
004068B4   CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>  ntdll.RtlAllocateHeap
004069F1   CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>  ntdll.RtlAllocateHeap
00403B63   CALL DWORD PTR DS:[<&KERNEL32.DeleteCrit  ntdll.RtlDeleteCriticalSection
00401540   CALL DWORD PTR DS:[<&KERNEL32.EnterCriti  ntdll.RtlEnterCriticalSection
00401563   CALL DWORD PTR DS:[<&KERNEL32.EnterCriti  ntdll.RtlEnterCriticalSection
00403EC5   CALL DWORD PTR DS:[<&KERNEL32.EnterCriti  ntdll.RtlEnterCriticalSection
00408EE3   CALL DWORD PTR DS:[<&KERNEL32.EnterCriti  ntdll.RtlEnterCriticalSection
004012CF   CALL DWORD PTR DS:[<&KERNEL32.HeapFree>]  ntdll.RtlFreeHeap
004012F5   CALL DWORD PTR DS:[<&KERNEL32.HeapFree>]  ntdll.RtlFreeHeap
00403ADB   CALL DWORD PTR DS:[<&KERNEL32.HeapFree>]  ntdll.RtlFreeHeap
00405F0C   CALL DWORD PTR DS:[<&KERNEL32.HeapFree>]  ntdll.RtlFreeHeap
00405FFA   CALL DWORD PTR DS:[<&KERNEL32.HeapFree>]  ntdll.RtlFreeHeap
00402F97   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00403519   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00403AEC   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00404C2B   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00406A8F   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00406B1C   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00407118   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00407163   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00407356   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
004073FE   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
004077E0   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00407D6D   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00408A4A   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00408BDA   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr  ntdll.RtlGetLastWin32Error
00401592   CALL DWORD PTR DS:[<&KERNEL32.LeaveCriti  ntdll.RtlLeaveCriticalSection
004015B5   CALL DWORD PTR DS:[<&KERNEL32.LeaveCriti  ntdll.RtlLeaveCriticalSection
00403DD2   CALL DWORD PTR DS:[<&KERNEL32.LeaveCriti  ntdll.RtlLeaveCriticalSection
00408F1B   CALL DWORD PTR DS:[<&KERNEL32.LeaveCriti  ntdll.RtlLeaveCriticalSection
00405F93   CALL DWORD PTR DS:[<&KERNEL32.HeapReAllo  ntdll.RtlReAllocateHeap
00406A48   CALL DWORD PTR DS:[<&KERNEL32.HeapReAllo  ntdll.RtlReAllocateHeap
00406AC9   CALL DWORD PTR DS:[<&KERNEL32.HeapReAllo  ntdll.RtlReAllocateHeap
0040358F   CALL DWORD PTR DS:[<&KERNEL32.SetLastErr  ntdll.RtlSetLastWin32Error
00405465   CALL DWORD PTR DS:[<&KERNEL32.SetLastErr  ntdll.RtlSetLastWin32Error
00408411   CALL DWORD PTR DS:[<&KERNEL32.HeapSize>]  ntdll.RtlSizeHeap
00404F0E   CALL <JMP.&KERNEL32.RtlUnwind>            ntdll.RtlUnwind
00408017   CALL <JMP.&KERNEL32.RtlUnwind>            ntdll.RtlUnwind
00407D60   CALL DWORD PTR DS:[<&KERNEL32.SetFilePoi  kernel32.SetFilePointer
004032BB   CALL DWORD PTR DS:[<&KERNEL32.SetHandleC  kernel32.SetHandleCount
00408DC6   CALL DWORD PTR DS:[<&KERNEL32.SetStdHand  kernel32.SetStdHandle
004021FA   CALL DWORD PTR DS:[<&KERNEL32.SetUnhandl  kernel32.SetUnhandledExceptionFilter
004025B4   CALL DWORD PTR DS:[<&KERNEL32.SetUnhandl  kernel32.SetUnhandledExceptionFilter
0040850D   CALL DWORD PTR DS:[<&KERNEL32.SetUnhandl  kernel32.SetUnhandledExceptionFilter
004039BD   CALL DWORD PTR DS:[<&KERNEL32.Sleep>]     kernel32.Sleep
00403A05   CALL DWORD PTR DS:[<&KERNEL32.Sleep>]     kernel32.Sleep
00403A50   CALL DWORD PTR DS:[<&KERNEL32.Sleep>]     kernel32.Sleep
00402226   CALL DWORD PTR DS:[<&KERNEL32.TerminateP  kernel32.TerminateProcess
004025E2   CALL DWORD PTR DS:[<&KERNEL32.TerminateP  kernel32.TerminateProcess
004033F3   CALL DWORD PTR DS:[<&KERNEL32.TlsAlloc>]  kernel32.TlsAlloc
00403772   CALL DWORD PTR DS:[<&KERNEL32.TlsAlloc>]  kernel32.TlsAlloc
00403451   CALL DWORD PTR DS:[<&KERNEL32.TlsFree>]   kernel32.TlsFree
00403331   CALL ESI                                  kernel32.TlsGetValue
00403348   CALL ESI                                  kernel32.TlsGetValue
0040339D   CALL ESI                                  kernel32.TlsGetValue
004033B4   CALL ESI                                  kernel32.TlsGetValue
00403402   CALL DWORD PTR DS:[<&KERNEL32.TlsGetValu  kernel32.TlsGetValue
00403532   CALL DWORD PTR DS:[<&KERNEL32.TlsGetValu  kernel32.TlsGetValue
0040341F   CALL DWORD PTR DS:[<&KERNEL32.TlsSetValu  kernel32.TlsSetValue
00402204   CALL DWORD PTR DS:[<&KERNEL32.UnhandledE  kernel32.UnhandledExceptionFilter
004025BF   CALL DWORD PTR DS:[<&KERNEL32.UnhandledE  kernel32.UnhandledExceptionFilter
00402AE0   CALL DWORD PTR DS:[<&KERNEL32.UnhandledE  kernel32.UnhandledExceptionFilter
00402B30   CALL DWORD PTR DS:[<&KERNEL32.UnhandledE  kernel32.UnhandledExceptionFilter
00408517   CALL DWORD PTR DS:[<&KERNEL32.UnhandledE  kernel32.UnhandledExceptionFilter
00405FE3   CALL DWORD PTR DS:[<&KERNEL32.VirtualAll  kernel32.VirtualAlloc
0040606E   CALL DWORD PTR DS:[<&KERNEL32.VirtualAll  kernel32.VirtualAlloc
00405E9F   CALL ESI                                  kernel32.VirtualFree
00402FF8   CALL EDI                                  kernel32.WideCharToMultiByte
00404C0D   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
00406E0D   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
004070DE   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
004075D2   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
00408C01   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
00409093   CALL DWORD PTR DS:[<&KERNEL32.WideCharTo  kernel32.WideCharToMultiByte
004090B9   CALL EBX                                  kernel32.WideCharToMultiByte
00408C1D   CALL DWORD PTR DS:[<&KERNEL32.WriteConso  kernel32.WriteConsoleA
00408BC7   CALL DWORD PTR DS:[<&KERNEL32.WriteConso  kernel32.WriteConsoleW
00402A86   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
00406E30   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
00406E71   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
00406F8B   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
0040702E   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
00407105   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile
0040714D   CALL DWORD PTR DS:[<&KERNEL32.WriteFile>  kernel32.WriteFile

P.D.: He tenido que actualizar a WinXP SP3, aunque no importa, ya que el resultado es el mismo (las imágenes y todos los datos que he puesto son con el SP3).
« Última modificación: 28 Febrero 2014, 15:35 pm por Lodos76 » En línea

soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #5 en: 28 Febrero 2014, 16:21 pm »

Tiene que aparecerte la función strcpy, mira en la pestaña B si tienes el breakpoint a strcpy. O si no search for -> names in all modules. Puedes enseñarme el call justo antes del 00401041?
En línea

01001010 01100001 01110110 01101001 01100101 01110010
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #6 en: 28 Febrero 2014, 22:59 pm »

Tiene que aparecerte la función strcpy, mira en la pestaña B si tienes el breakpoint a strcpy. O si no search for -> names in all modules. Puedes enseñarme el call justo antes del 00401041?

Vaya, aparece :P.

BP strcpy --> mirar Pestaña B
Código:
7C90248D ntdll Always PUSH EDI

Colocado :D

Presiono run (F9) y --> exitcode C0000409, y termina el programa. Quizá alguna protección de software me lo bloquee...


Click derecho --> Search  for --> Name in all modules
Código:
7C90248D  ntdll  .text  Export  strcpy

Imagen antes del CALL 00401041
« Última modificación: 28 Febrero 2014, 23:06 pm por Lodos76 » En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Error en Buffer Overflow
« Respuesta #7 en: 28 Febrero 2014, 23:03 pm »

En cuanto a la compilación, desactivaste GS?, DEP está desactivado para tal ejecutable?, desmarcaste todos los saltos de excepciones el el debugger?, ya que si no los quitas, el depurador intentará saltarlos y así no podrás percatarte de donde se ha producido el error (que valor toma EIP), más tarde le echaré una mirada, saludos.
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
soez

Desconectado Desconectado

Mensajes: 76



Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #8 en: 28 Febrero 2014, 23:14 pm »

Pon un bp en 00401032 y aprieta run y sacale imagen cuando pare. Te pongo aqui este ollydbg parcheado para que no detecte el IsDebuggerPresent (No me acuerdo si era el parcheado 4 o 5 si eso avisa) por ir eliminando posibilidades. Aunque este DEP activado debería parar en strcpy y ya después se ve. Si, deberias destildar todas las excepciones, puedes mirar la pestaña L log para ver que ha pasado también.

http://ricardonarvaja.info/WEB/OTROS/HERRAMIENTAS/L-M-N-O-P/Parcheado%204.rar
« Última modificación: 28 Febrero 2014, 23:16 pm por soez » En línea

01001010 01100001 01110110 01101001 01100101 01110010
Lodos76

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Error en Buffer Overflow
« Respuesta #9 en: 28 Febrero 2014, 23:17 pm »

En cuanto a la compilación, desactivaste GS?, DEP está desactivado para tal ejecutable?, desmarcaste todos los saltos de excepciones el el debugger?, ya que si no los quitas, el depurador intentará saltarlos y así no podrás percatarte de donde se ha producido el error (que valor toma EIP), más tarde le echaré una mirada, saludos.

Whaaat? ¿Desmarqué? ¿Cómo hago todo eso? No me importa leerme todo lo que me pases, quiero aprender.

He buscado por "desmarcar saltos debugger", "desmarcar jmp debugger" (también en inglés) y no sale nada que me pueda servir.

Y perdón, ahora estoy en SP3, pensé que no se activaría solo... Ya está DEP desactivado.
En línea

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Buffer Overflow en una pagina web
Nivel Web
mordiskos 1 3,438 Último mensaje 9 Marzo 2006, 00:45 am
por ANELKAOS
buffer overflow
Ingeniería Inversa
Meg 2 5,812 Último mensaje 6 Febrero 2009, 11:20 am
por Shaddy
error unpack requires a buffer of 4 bytes
Scripting
colcrt 0 2,254 Último mensaje 20 Mayo 2022, 23:40 pm
por colcrt
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines