繁体   English   中英

C中的缓冲区溢出与获取

[英]Buffer overflow in C with gets

我对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);

所以我的问题是,如何将“ setThis”设置为某个变量? 感谢您的任何帮助,BeastlyJman。

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

但是正如我所说,并不能保证编译器会执行此操作。 您应该真正检查编译器生成的汇编代码,以查看tempsetThis的位置。

此外,如果减少的大小,你可以节省自己一些打字temptemp[8]然后通过10fgets 要导致溢出,您需要输入更多的字符,而缓冲区不能容纳更多的字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM