Sto cercando di capire perché il mio buffer overflow non funzionerà. Ho lottato con questo per alcuni giorni, quindi ho pensato che fosse giunto il momento di chiedere ai professionisti. Ho solo recentemente iniziato a capire il concetto di attacchi di overflow del buffer con una slitta NOP.
Questo è per una sfida. Nessun spoiler per favore, ma i puntatori utili saranno molto apprezzati.
Il mio problema è questo:
Sono in grado di eseguire un comando Perl come questo NOP ... Shellcode ... *mempntr
funziona come previsto quando gli do un puntatore arbritario.
- Dove le cose blu sono le mie NOP
- Il rosso è il mio codice shell
- Il giallo evidenziato è il mio
mempntr
Program received signal SIGSEGV, Segmentation fault.
0xaaaaaaaa in ?? ()
Anche questo è come previsto.
Prova con mempntr
corretto
Ora, quando provo a cambiare mempntr
in qualcosa a cui voglio puntarlo, come a metà della NOP, per esempio la posizione 0xffffd580
si comporta in modo strano.
Al punto di interruzione in leave
Verifico il% co_de salvato
(gdb) i f
Stack level 0, frame at 0xffffd5c0:
eip = 0x80484b1 in main; saved eip = 0xffffd580
Arglist at 0xffffd5b8, args:
Locals at 0xffffd5b8, Previous frame's sp is 0xffffd5c0
Saved registers:
ebp at 0xffffd5b8, eip at 0xffffd5bc
Tuttavia quando I eip
o c
ho un SEGFUALT in una posizione strana.
Program received signal SIGSEGV, Segmentation fault.
0xffffd5a7 in ?? ()
Sto cercando una risposta che potrebbe far luce su questo, o indirizzarmi verso una risorsa in cui posso imparare cosa sta succedendo.