Execute Injected Shellcode

0

L'ambiente è Windows XP SP3 a 32 bit e i programmi sono stati compilati con Visual C ++ 2008 Express Edition senza DEP, ASLR, SafeSEH e SEHOP.

Ho provato a sfruttare il SEH. Vedo in WinDBG che il programma salta allo shellcode iniettato (che esegue calc.exe) e controllo il puntatore dell'istruzione:

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

Quando EIP = 12fb5c che è l'indirizzo del buffer.

Per qualche ragione, quando premo go , lo shellcode viene eseguito senza eseguire calc.exe e vedo il messaggio:

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

Qualcuno può tentare di spiegare perché non posso eseguire lo shellcode iniettato?

Ho fatto in modo che lo shellcode funzioni e ho anche provato un codice shell diverso. Sono persino riuscito a far passare il programma a un'altra funzione nel codice ed eseguirlo.

Nota che ho avuto lo stesso problema con un altro programma in cui provo a sfruttare il vtable di C ++.

Grazie mille in anticipo.

    
posta alond22 10.09.2018 - 18:33
fonte

0 risposte