我正在尝试使用 ubuntu 12 上的终端进行编译:
#include <stdio.h>
#include <stdlib.h>
main()
{
/*declare argument array*/
char *args[2];
args[0] = “/bin/bash”;
args[1] = NULL;
execve(args[0], args, NULL);
exit(0);
}
我在http://www.securitytube.net/video/235上找到了这个例子,它也恰好是 Aleph One 在“为了乐趣和利润而粉碎堆栈”中使用的一个。我知道从那以后发生了很大的变化。在我使用的更简单的示例中:
gcc -ggdb -mpreferred-stack-boundary=2 -fno-stack-protector 文件名 filename.c
其他时候我可能会包含静态实用程序。在我尝试编译上面的 C 代码之前,它一直有效。我从终端收到的消息是:
ss@ss-laptop:~$ gcc -static -mpreferred-stack-boundary=2 -fno-stack-protector -o shell shell.c
shell.c: In function ‘main’:
shell.c:9:2: error: stray ‘\342’ in program
shell.c:9:2: error: stray ‘\200’ in program
shell.c:9:2: error: stray ‘\234’ in program
shell.c:9:15: error: expected expression before ‘/’ token
shell.c:9:15: error: stray ‘\342’ in program
shell.c:9:15: error: stray ‘\200’ in program
shell.c:9:15: error: stray ‘\235’ in program
ss@ss-laptop:~$
我知道这是一个非常简单的示例,并且此错误可能是由 linux 中当前的标准安全措施引起的,但我想绕过它们来练习这个示例以及将来的更多内容。如果有人可以提供帮助,那将是“粉碎”。
干杯