Rimozione di byte null dal codice shell

3

Sto imparando le basi della codifica della shell in modo che possa imparare a sfruttare i buffer overflow. Il problema è che il codice byte di esempio che ho scritto contiene byte null. Ecco l'esempio:

xor    %edi,%edi      >       31 ff         
mov    $0x3c,%eax     >       b8 3c 00 00 00          
syscall               >       0f 05   

Bytecode: "\x31\xff\xb8\x3c\x00\x00\x00\x0f\x05"

Quali sono alcune tecniche comuni utilizzate per eliminare i byte null? Ho sentito che la gente usa gli encoder per questo genere di cose ma non riesco a trovare grandi risorse su questo.

    
posta SivaDotRender 19.06.2015 - 03:26
fonte

1 risposta

3

mov può essere sostituito da push e pop . Quindi ad esempio questo:

mov    $0x3c,%eax

Può diventare questo:

push $0x3c
pop %eax

Che ti darebbe questo codice a byte zero:

   0:   31 ff                   xor    %edi,%edi
   2:   6a 3c                   push   $0x3c
   4:   58                      pop    %eax
   5:   0f 05                   syscall
    
risposta data 19.06.2015 - 11:43
fonte

Leggi altre domande sui tag