有没有办法利用 4 字节整数溢出到 -1?[memcpy(dest, source, -1)]

逆向工程 开发
2021-06-15 00:53:19

我正在调试一个程序,发现了一行代码,如下所示:

memcpy(stack_variable, attacker_supplied, read_length_from_packet(pPacket));

read_length_from_packet返回-1,如果长度大于到0x1FF大,但他们似乎忘记了实际检查-1。

由于memcpy采用size_t(无符号),-1 被转换为 0xFFFFFFFF,并且我可以大量覆盖堆栈,它不应该写入内存,引发异常并崩溃。

有没有办法利用这一点,或者它只会留在崩溃中?

1个回答

嗯,这是一个简单的缓冲区溢出,所以可能是的,这取决于您所针对的软件/系统上可用的缓解措施。

你需要做的是覆盖一些有用的东西,比如:

  • 返回地址存储在堆栈中。
  • SE 处理程序地址存储在堆栈中。
  • 任何可以让您控制程序执行流程的东西。