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
。