Eliminando bytes nulos del código de shell

3

Estoy aprendiendo los conceptos básicos de la codificación de shell para que pueda aprender a explotar los desbordamientos de búfer. El problema es que el código de bytes de ejemplo que escribí contiene bytes nulos. Aquí está el ejemplo:

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"

¿Cuáles son algunas de las técnicas comunes que se utilizan para eliminar los bytes nulos? Escuché que la gente usa codificadores para este tipo de cosas, pero no puedo encontrar ningún gran recurso sobre esto.

    
pregunta SivaDotRender 19.06.2015 - 03:26
fuente

1 respuesta

3

mov se puede reemplazar por push y pop . Así, por ejemplo, esto:

mov    $0x3c,%eax

Puede convertirse en esto:

push $0x3c
pop %eax

Lo que le daría este código libre de byte nulo:

   0:   31 ff                   xor    %edi,%edi
   2:   6a 3c                   push   $0x3c
   4:   58                      pop    %eax
   5:   0f 05                   syscall
    
respondido por el tim 19.06.2015 - 11:43
fuente

Lea otras preguntas en las etiquetas