22 lines
1.0 KiB
Plaintext
22 lines
1.0 KiB
Plaintext
On peut voir dans le code grace a ghidra qu'on ecrit a l'addresse "index * 4 + array", la maniere dont l'asm le fait c'est index << 2 + array. On peut donc bypass la protection tout les 3 en ajoutant 2^31 qui n'est pas un multiple de 3 ((3k+n)%3 != 0 si n%3 != 0). A partir de ca on peut ecrire un shellcode dans la memoire, ensuite j'overide la got via l'ancienne methode.
|
|
|
|
|
|
Ici bas la methode que j'essayais de faire pendant des jours alors que ca marche pas mais ca aurait ete la classe..............
|
|
---------------------------------------------------------------------------------
|
|
|
|
-1040108880On peut ecrire que 8 octets sur 12
|
|
|
|
"/bin/sh" c'est 8 char avec le '\0' donc ok pour le modulo
|
|
"/bin" => 0x2F62696E => 794978670
|
|
"/sh\0" => 0x2F736800 => 796092416
|
|
|
|
|
|
system on peut le call avec l'addresse, puis l'argument vers esp+quelque chose.
|
|
|
|
-1040108880 Index a store avec 4159090384 (0xf7e6aed0 ou system)
|
|
ca override le plt/got de puts
|
|
|
|
|
|
|
|
override esp pour avoir le bon argument format addr de system BLANC (modulo 3) addr de /bin/sh
|