【发布时间】:2011-12-01 21:55:37
【问题描述】:
我正在学习格式字符串漏洞,并且我已经编写了一个测试程序来尝试它们。这是我的测试程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
char test[] = "Whatever \n";
printf(argv[1]);
return 0;
}
如果我将%p 用作argv[1],它当然会从堆栈中打印出一个地址。如果我输入%s
作为argv[1],它打印出来:
__libc_start_main
我的程序或论点有问题吗?如何让它从堆栈中打印 test[] 数组?这只是一个例子,我想知道如何从堆栈中打印出任何变量。我只是在使用这个程序,所以我有一个简单的例子。
【问题讨论】:
-
您使用的是什么操作系统和编译器?您需要为此添加标签。这是作业吗?如果是这样,请添加该标签。
-
我相信您知道您的代码行为是未定义的(即未由 C 标准定义)。