Problemi nell'esecuzione di shellcode tramite nop-slitta

2

Le istruzioni del mio codice shell cambiano durante l'esecuzione. Non sono sicuro del perché.

Ecco come appare il mio shellcode:

=> 0xbffff0b3:  nop
   0xbffff0b4:  nop
   0xbffff0b5:  xor    eax,eax
   0xbffff0b7:  push   eax
   0xbffff0b8:  push   0x68732f2f
   0xbffff0bd:  push   0x6e69622f
   0xbffff0c2:  mov    ebx,esp
   0xbffff0c4:  push   eax
   0xbffff0c5:  push   esp
   0xbffff0c6:  push   ebx
   0xbffff0c7:  mov    al,0x3b
   0xbffff0c9:  push   eax
   0xbffff0ca:  int    0x80

Passo il mio codice e tutto sembra a posto all'inizio:

   0xbffff0b5: xor    eax,eax
   0xbffff0b7: push   eax
   0xbffff0b8: push   0x68732f2f
=> 0xbffff0bd: push   0x6e69622f
   0xbffff0c2: mov    ebx,esp
   0xbffff0c4: push   eax
   0xbffff0c5: push   esp
   0xbffff0c6: push   ebx

All'improvviso, quando arrivo a mov ebx, esp , le rimanenti istruzioni cambiano:

   0xbffff0b7: push   eax
   0xbffff0b8: push   0x68732f2f
   0xbffff0bd: push   0x6e69622f
=> 0xbffff0c2: mov    ebx,esp
   0xbffff0c4: das    
   0xbffff0c5: bound  ebp,QWORD PTR [ecx+0x6e]
   0xbffff0c8: das    
   0xbffff0c9: das

Ecco come ho compilato il programma:

gcc vuln.c -o vuln -fno-stack-protector -z execstack

Qualsiasi spiegazione su cosa sta succedendo qui sarebbe eccezionale!

    
posta bjax15 01.09.2015 - 19:57
fonte

1 risposta

3

Il tuo shellcode è in pila. Presumo che il tuo registro esp sia impostato su 0xbffff0c4 . Hai spinto 0x6e69622f (2F 62 69 6E), che corrisponde a

2F        das
62 69 6E  bound  ebp,QWORD PTR [ecx+0x6e]

Questo spinge le tue istruzioni spezzate all'interno del tuo shellcode. Si rompe a causa di questo. Non puoi spingere quando hai lo shellcode nello stack!

    
risposta data 01.09.2015 - 20:03
fonte

Leggi altre domande sui tag