【发布时间】:2015-07-26 20:26:09
【问题描述】:
我正在尝试通过goodFunctionUserInput 中的用户输入更改返回地址来调用oopsIGotToTheBadFunction。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int oopsIGotToTheBadFunction(void)
{
printf("Gotcha!\n");
exit(0);
}
int goodFunctionUserInput(void)
{
char buf[12];
gets(buf);
return(1);
}
int main(void)
{
goodFunctionUserInput();
printf("Overflow failed\n");
return(1);
}
/**
> gcc isThisGood.c
> a.out
hello
Overflow failed
*/
我已尝试使用 0123456789012345 加载缓冲区,但不确定要为其余部分放置什么来获取地址。地址是0x1000008fc。
任何见解或 cmets 都会有所帮助。
【问题讨论】:
-
您将需要使用
-fno-stack-protector进行编译,以防止堆栈cookie 阻止您的工作。此外,您应该始终使用-Wall -Werror进行编译以发现一堆愚蠢的错误。 -
也许你应该去阅读原件,比如 Aleph 1 的 Smashing the stack for fun and profit?
-
每一个修铁路的工程师,都会有人为了消遣而试图让火车脱轨。
-
如果你真的需要帮助来破坏某些东西,就去找一个帮派来壮大你。
-
我投票结束这个问题作为题外话,因为我不是 100% 确定,但 OP 对缓冲区溢出漏洞利用比实际上对社交和/或专业有用的程序更感兴趣.
标签: c buffer overflow memory-address