【发布时间】:2012-03-03 19:04:18
【问题描述】:
我有简单的 C 程序:
char user_input[100];
scanf("%s", user_input);
printf(user_input);
据我了解,这代表安全漏洞;例如输入一堆 %x 将打印出堆栈的内容。
但是如何打印一个选定的内存位置呢?
我读到了:
\x10\x01\x48\x08_%08x.%08x.%08x.%08x.%08x|%s|
应该从this paper 转储位置0x08480110 的内存内容。但相反,它正在将接下来的 4 个字节打印到堆栈上的格式字符串中。我正在尝试了解原因。
【问题讨论】:
-
这是一个森林问题,输入超过 99 个字符会引发缓冲区溢出。 Little Bobby Tables 不清理输入的故事。