argv[1]ÀÇ Å©±â¸¦ 2156( Àü¿ªº¯¼ö ºÎºÐÀÇ ¸Þ¸ð¸® ÃÖ´ë Å©±â) ÀÌ»óÀ» ³ÖÀ»¶§ Segmentation fault °¡ ¶ß´Â°ÍÀ» Á¦¿ÜÇÏ°í´Â ¾Æ¹«°Íµµ ¸øã¾Ò½À´Ï´Ù.
ÈùÆ® ºÎŹµå¸³´Ï´Ù. ¤Ð¤Ð
char buffer[4];
void (*func)(int, int, int);
void dummy(int argc1, int argc2, int argc3)
{
printf("Do you wonna exploit me?\n");
exit(1);
}
int main(int argc, char *argv[])
{
if(argc != 2)
{
printf("argc Error!!\n");
exit(-1);
}
// initializing buffer
memset(buffer, 0, sizeof(buffer));
func = dummy;
// buffer overflow!!
strcat(buffer, argv[1]);
// initializing dummy registers
asm("xor %ebx, %ebx");
asm("xor %ecx, %ecx");
asm("xor %edx, %edx");
// jump into blackhole!
func(0, 0, 0);
}
|