利用了缓冲区溢出的原理实现跳转到指定函数操作
准备工作
提供两个可执行文件:attack 和 hex2str
为两个文件添加可执行的权限:sudo chmod +x target_file,
了解MIPS默认的数据存储方式是小段模式
分析
通过缓冲区溢出的方式跳转到touch函数,我们已知主函数会调用getbuf函数,我们想通过修改getbuf返回值的方式调用touch函数(BUFFER_SIZE=40).我们先观察getbuf函数,它只有一个局部变量,缓冲区简单。
diasa getbuf查看函数代码
004008e0 <getbuf>:
4008e0: 27bdffb8 addiu sp,sp,-72
4008e4: afbf0044 sw ra,68(sp)
4008e8: afbe0040 sw s8,64(sp)
4008ec: 03a0f021 move s8,sp
4008f0: 27c20018 addiu v0,s8,24
4008f4: 00402021 move a0,v0
4008f8: 0c1001e4 jal 400790 <Gets>
4008fc: 00000000 nop
400900: 03c0e821 move sp,s8
400904: 8fbf0044 lw ra,68(sp)
400908: 8fbe0040 lw s8,64(sp)
40090c: 27bd0048 addiu