c - 防止 Ubuntu 12 中缓冲区溢出演示中的段错误

标签 c security bash buffer-overflow

我正在尝试运行这段易受攻击的 C 代码:

#include <stdio.h>
#include <stdlib.h>

int add(int x, int y)
{
 int z =10;
 z = x + y;
 return z;
}

main(int argc, char **argv)
{
 int a = atoi(argv[1]);
 int b = atoi(argv[2]);
 int c;

 char buffer[100];

 gets(buffer);
 puts(buffer);

 c = add(a,b);

 printf("Sum of %d+%d = %d\n",a, b, c);

 exit(0);
}

我试图克服段错误,以便我可以输入整数,但段错误阻止了这一点。在终端我尝试过: gcc -ggdb -fno-stack-protector -U_FORTIFY_SOURCE -Wa,--execstack -o SimpleDemo SimpleDemo.c

我仍然遇到段错误。我不知道下一步该尝试什么。正如你可能知道的那样,我是一个 ubuntu 新手。我使用的 bash 代码来自这里:

http://www.evanjones.ca/buffer-overflow-101.html

我已经从事这个工作有一段时间了,所以非常感谢一些帮助

干杯

最佳答案

只是解释 hmjd 要求您做什么。

运行(二进制)10 20

关于c - 防止 Ubuntu 12 中缓冲区溢出演示中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211239/

相关文章:

c - 解析带有多个参数的命令行选项 [getopt?]

c - 如何将 float 转换为不带零和点的 float

javascript - 在 JavaScript 中依赖全局 native 对象(尤其是 Object 对象)是否安全?

linux - 检查 Linux text/fb 控制台当前是否按住 shift 键

bash - 在 bash 中使用 "exit ${?}"是否正确?

c++ - 何时以及如何对不同类型的文件进行读/写 block (即暂停您的程序)?

c - 读取文件并将相同内容保存到新文件中,但不包含文件中的注释

c# - 我怎样才能安全地让用户使用(Postgresql?

security - 我应该将自签名证书提交给源代码管理吗?

linux - Echo 不打印某些变量