Stavo cercando di sfruttare un overflow del buffer nel modo seguente:
NOP sled -> shellcode -> address of NOP sled (before it was save RIP)
Ma mi è stato detto su Stack Overflow che dovrei anche aggiungere una slitta NOP al mio shellcode:
NOP sled -> shellcode ->address of NOP sled -> NOP sled.
Qualcuno può spiegarmi perché dovrei aggiungere una slitta NOP al mio shellcode?
Questo è il mio post originale su Stack Overflow:
Grazie.
EDIT: ho letto un altro post in cui qualcuno ha avuto lo stesso problema.
Ha risolto questo problema aggiungendo una piccola slitta NOP dopo lo shellcode. Dato che lo shellcode è stato aggiunto allo stack alla fine del buffer, e inserisce alcune cose nello stack stesso, stava sovrascrivendo il proprio codice.
Ma non capisco come un'istruzione push possa far sì che lo shellcode sovrascriva il proprio codice.