C中的缓冲区溢出得到

时间:2015-02-24 22:04:19

标签: c buffer buffer-overflow

我是C的新手,作为课程作业,我的导师希望我们使用缓冲区溢出。我在网上找到了以下内容作为示例,我无法弄清楚如何使用它!

#include <stdio.h>
char temp[32];

unsigned int setThis=1;

printf("Enter your temp: \n");
fgets(temp, 34, stdin); //Takes a 34 buffer size when temp can only be 32
printf("Value of you setThis: %d", setThis);

所以我的问题是,我如何设置&#34; setThis&#34;到某个变量?  任何帮助表示赞赏,BeastlyJman。

1 个答案:

答案 0 :(得分:1)

没有保证这样做的方法,但通常将变量放在堆栈上,使得第一个变量在内存中是最后一个。因此,如果您在 setThis之前声明temp[32] ,那么setThis将位于temp数组的末尾,您可以覆盖它。

但正如我所说,并不能保证编译器会做什么。您应该检查编译器生成的汇编代码,以查看tempsetThis的位置。

此外,如果您将temp的尺寸缩小为temp[8],然后将10传递给fgets,则可以节省一些打字费用。要导致溢出,您需要输入比缓冲区更多的字符。