64 位小端序,开启 canary 保护和 NX 保护
跟进 operation 函数
其中 robobirdNames 是全局数组(一个长度为 10 的字符串指针数组,每一项指向一个字符串)
可以看到当 v1 > 9 的时候程序也会访问 robobirdNames[v1]
没有对负数做检查,也就是说,可以输入负数,比如 -1
,它就会访问 robobirdNames[-1]
即 robobirdNames 开始地址向下偏移 8 字节(一个指针)
这会导致数组越界
64 位小端序,开启 canary 保护和 NX 保护
跟进 operation 函数
其中 robobirdNames 是全局数组(一个长度为 10 的字符串指针数组,每一项指向一个字符串)
可以看到当 v1 > 9 的时候程序也会访问 robobirdNames[v1]
没有对负数做检查,也就是说,可以输入负数,比如 -1
,它就会访问 robobirdNames[-1]
即 robobirdNames 开始地址向下偏移 8 字节(一个指针)
这会导致数组越界