[英]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
数组的末尾,您可以覆盖它。
但是正如我所说,并不能保证编译器会执行此操作。 您应该真正检查编译器生成的汇编代码,以查看temp
和setThis
的位置。
此外,如果减少的大小,你可以节省自己一些打字temp
来temp[8]
然后通过10
至fgets
。 要导致溢出,您需要输入更多的字符,而缓冲区不能容纳更多的字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.