Scrive zeri in memoria tramite un buffer overflow

1

Cercando di fornire a un programma da riga di comando un indirizzo per sovrascrivere un indirizzo di ritorno salvato nello stack. Potrei esagerare con successo l'argomento di input nella posizione esatta dell'indirizzo di ritorno, ma l'indirizzo che voglio dare contiene zeri (inizia con zeri, ad esempio 0x0000555555554bce ).

Dò l'indirizzo in da da stringa, 00 deve essere un carattere NUL ( %code% ) ma non posso darlo usando la riga di comando. Qualche idea su come posso ottenerlo?

    
posta Glen E. Renner 23.03.2018 - 18:49
fonte

1 risposta

0

Se ho capito bene il problema ha a che fare con il tuo input. Puoi usare qualsiasi linguaggio di scripting per comprimere i tuoi input. Ad esempio in python puoi fare ( assumendo x64-bit arch ):

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

o se per qualsiasi motivo preferisci solo moduli built-in:

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

Inoltre puoi ottenere la stessa cosa scrivendo il buffer su un file e poi passare il file come input.

    
risposta data 23.03.2018 - 22:25
fonte

Leggi altre domande sui tag