我正在做一个家庭作业,我们要利用一个易受缓冲区溢出影响的程序。我们通过创建一个大char
数组并首先在没有操作指令的情况下完全填充它来做到这一点。
我相信我应该做的是将恶意代码复制到缓冲区中的某个位置(这部分我可以做得很好),然后以某种方式修改可利用函数的返回地址,使其指向恶意代码所在的位置。
我知道我想设置的地址(比方说½¾¿º
),但我收到了一些警告,但不知道它们是由什么引起的。
这是导致警告的代码(本质上):
int start_of_return_address = 10;
chars[start_of_return_address + 0] = '½';
chars[start_of_return_address + 1] = '¾';
chars[start_of_return_address + 2] = '¿';
chars[start_of_return_address + 3] = 'º';
我为每个作业收到的警告是:
warning: overflow in implicit constant conversion
warning: multi-character character constant
我通过将bdbebfba
(恶意代码的地址)转换为字符(yielding ½¾¿º
)来获得地址。
关于什么可能导致警告的任何想法,或者我可以将地址复制到字符数组中的另一种方式?
请记住,这是家庭作业。