Escriba ceros en la memoria a través de un desbordamiento de búfer

1

Intentando dar a un programa de línea de comandos una dirección para sobrescribir una dirección de retorno guardada en la pila. Podría desbordar con éxito el argumento de entrada en la posición exacta de la dirección de retorno, pero la dirección que quiero dar contiene ceros (comienza con ceros, por ejemplo, 0x0000555555554bce ).

Doy la dirección desde la cadena, el 00 debe ser un carácter NUL ( %code% ) pero no puedo dar eso usando la línea de comando. ¿Alguna idea de cómo puedo lograr eso?

    
pregunta Glen E. Renner 23.03.2018 - 18:49
fuente

1 respuesta

0

Si entendí correctamente, el problema tiene que ver con el empaquetado de su entrada. Puede utilizar cualquier lenguaje de scripting para empacar su entrada. Por ejemplo, en python puede hacerlo ( suponiendo que el arco de 64 bits ):

cat <(python -c 'from pwn import p64; print your_padding_here + p64(0x555555554bce)') - | ./your_program

o si por alguna razón prefiere solo módulos incorporados:

cat <(python -c 'print your_padding_here + __import__("struct").pack("I", 0x555555554bce)') - | ./your_program

También puedes lograr lo mismo escribiendo el búfer en un archivo y luego pasar el archivo como entrada.

    
respondido por el game0ver 23.03.2018 - 22:25
fuente

Lea otras preguntas en las etiquetas