我正在调试一个程序,发现了一行代码,如下所示:
memcpy(stack_variable, attacker_supplied, read_length_from_packet(pPacket));
将read_length_from_packet返回-1,如果长度大于到0x1FF大,但他们似乎忘记了实际检查-1。
由于memcpy采用size_t(无符号),-1 被转换为 0xFFFFFFFF,并且我可以大量覆盖堆栈,它不应该写入内存,引发异常并崩溃。
有没有办法利用这一点,或者它只会留在崩溃中?