Memory leaks 金丝雀泄漏(扫描频率(“d”,数值)

Memory leaks 金丝雀泄漏(扫描频率(“d”,数值),memory-leaks,scanf,buffer-overflow,Memory Leaks,Scanf,Buffer Overflow,我正在做一些关于堆栈金丝雀的缓冲区溢出练习。假设在主函数中有一个缓冲区buf和一个整数num 因此,在主函数中,它将如下所示: char buf[32] = {0}; fflush(stdout); int num; scanf("%d", &num) getchar(); print("%lu", *(unsigned long *)(buf + num)); 有没有任何方式可以让金丝雀通过scanf(“%d”,num))泄漏?我一直在网上做

我正在做一些关于堆栈金丝雀的缓冲区溢出练习。假设在主函数中有一个缓冲区
buf
和一个整数
num

因此,在主函数中,它将如下所示:

char buf[32] = {0};
fflush(stdout);

int num;
scanf("%d", &num)
getchar();
print("%lu", *(unsigned long *)(buf + num));
有没有任何方式可以让金丝雀通过
scanf(“%d”,num)
)泄漏?我一直在网上做一些研究,但最近我得到的是,在
scanf(…
中给出一个负数可能会导致内存泄漏(泄漏金丝雀)。但我似乎无法理解这是如何工作的


非常感谢您能帮我找到正确的方向!!

事实上,您使用的是
num
而不是
&num
作为
scan
参数,这意味着
num
中存储的任何垃圾都将被视为地址,并且会发生有趣的事情(很可能是segfault)。如果你解决了这个问题,并找到一种方法将更多数据写入
num
中,它可能会溢出到
buf
。哎呀!这是我的错别字。它应该是
&num
。编辑问题现在找到一种方法让
scanf
读取比
sizeof(int)更多的字节
如果额外数据存储在堆栈框架的下方,则额外数据将溢出到
buf