在内存中,地址是上低下高,利用内存时是从内存高位开始利用。但在已经定义了的内存小块内存中,内存却是从上到下(即从低址向高址)利用。
在完成实验的过程中,要注意地址的情况,内存数据与数值数据是不同的。在数值数据中,我们从左到右读,但在内存数据中,它是从右到左两个一读。比如数值数据0x12345678,转变为内存数据就是0x78563412。
这个实验实际上就是巧用字符串截断符null。
在实验中要弄清楚地址,地址一搞通,实验就差不多完成了
栈帧布局:
覆盖邻接变量:
修改邻接变量成功:
在这个实验中,如果你的输入字符串字符小于1234567,那么strcmp()函数会返回 -1,-1会将authenticated的内存改为0xFFFFFFFF,这时字符数组再溢出的话,authenticated的内存会被改为0xFFFFFF00,这样将不能通过验证,显示incorrent password!
时间: 2024-10-10 03:50:39