关于堆栈溢出的练习

时间:2011-05-01 15:08:34

标签: c stack-overflow

我正在尝试学习堆栈溢出,但我的练习有问题。在易受攻击的程序中,必须接收我的shellcode的代码部分是:

 int array[8];
 index = (int) strtol(argv[1], NULL, 10);
 value = (int) strtoul(argv[2], NULL, 16);
 array[index] = value;

我很容易找到用于覆盖RET的数组索引。然后我试图在易受攻击的程序中找到返回地址的偏移量,如下所示:

./victim 12 $(printf "%0512x" 0)

我尝试了很多不同的长度,但是在每个可能的长度我都会遇到分段错误。这很奇怪,因为我的书说我应该只能在保存的返回地址的位置得到分段错误。 我是初学者,所以我可能正在做一些基本的错误。任何人都可以帮我解决这个问题吗? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您遇到分段错误,因为您只为程序提供了一个参数,但是您在strtoul上调用了argv[2],这是一个NULL指针。