Ejecutar código de shell inyectado

0

El entorno es Windows XP SP3 de 32 bits y los programas se compilaron con Visual C ++ 2008 Express Edition sin DEP, ASLR, SafeSEH y SEHOP.

Intenté explotar el SEH. Veo en WinDBG que el programa salta al shellcode inyectado (que ejecuta calc.exe) y controlo el indicador de instrucción:

0012fb5c fc              cld
0012fb5d e889000000      call    0012fbeb
0012fb62 60              pushad
0012fb63 89e5            mov     ebp,esp
0012fb65 31d2            xor     edx,edx
:

Cuando EIP = 12fb5c , que es la dirección del búfer.

Por alguna razón, cuando presiono go , el shellcode se ejecuta sin ejecutar calc.exe y veo el mensaje:

0:000> g
eax=00000000 ebx=00000000 ecx=7c800000 edx=00340608 esi=7c90de50 edi=0012f890
eip=7c90e4f4 esp=0012f680 ebp=0012f77c iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!KiFastSystemCallRet:
7c90e4f4 c3              ret

¿Alguien puede intentar explicar por qué no puedo ejecutar el Shellcode inyectado?

Me aseguré de que el código shell funcione y también probé un código shell diferente. Incluso logré que el programa saltara a otra función en el código y lo ejecutara.

Tenga en cuenta que tuve el mismo problema con otro programa en el que trato de explotar la versión de C ++.

Muchas gracias de antemano.

    
pregunta alond22 10.09.2018 - 18:33
fuente

0 respuestas