【问题标题】:Prevent segmentation fault in buffer overflow demonstration in Ubuntu 12防止 Ubuntu 12 中缓冲区溢出演示中的分段错误
【发布时间】:2012-06-26 15:55:00
【问题描述】:

我正在尝试运行这段易受攻击的 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

我已经有一段时间了,所以非常感谢一些帮助

干杯

【问题讨论】:

  • 您需要提供整数作为命令行参数,而不是运行程序然后输入它们。如果你不这样做,atoi(argv[1]) 调用将出现段错误(可能)。

标签: c security bash buffer-overflow


【解决方案1】:

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

运行(二进制)10 20

【讨论】:

  • 谢谢大家。澄清一下,当我使用 - ./SimpleDemo 运行程序时,我将 10 和 20 放在那一行?运行这个的 bash 代码看起来如何?
猜你喜欢
  • 2014-02-26
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多