看wiki 感觉看的也还行了 打算最近把 攻防世界的题 再看看 然后去肝一下buuctf上面的题目
然后 发现了一个 这个 路由器漏洞靶场 里面有源代码 还有编译好的 程序
然后 里面一共有三个
这里面也有三个
这里 从名字也能看出来利用的漏洞种类 这个项目的地址,
https://github.com/praetorian-inc/DVRF
这里面还有源代码 有空应该会更新这篇博客
stack_bof_01
如果对环境 或者 调试不太熟悉的 可以看看我 上篇写的博客
https://blog.csdn.net/qq_41071646/article/details/98343160
然后会发现有一个后门函数
那么 我们的目的就是 能够控制程序流程 然后拿到 shell
这里的利用点还是 strcpy
这里可以通过调试 来确定 我们的栈利用空间 确定返回地址的偏移,
可以使用
cp $(which qemu-mipsel-static) ./
cp $(which qemu-mipsel) ./
来 把 这两个文件复制到当前文件里面 然后就可以运行加调试,
./qemu-mipsel-static -L ./ pwnable/Intro/stack_bof_01 pipixia
后面那个pipixia 就是我们输入的参数,
然后这里有源码 (其实根据 那个工具的反编译 也能看出的七七八八了)
#include <string.h>
#include <stdio.h>
//Simple BoF by b1ack0wl for E1550
int main(int argc, char **argv[]){
char buf[200] ="\0";
if (argc < 2){
printf("Usage: stack_bof_01 <argument>\r\n-By b1ack0wl\r\n");
exit(1);
}
printf("Welcome to the first BoF exercise!\r\n\r\n");
strcpy(buf, argv[1]);
printf("You entered %s \r\n", buf);
printf("Try Again\r\n");
return 0x41; // Just so you can see what register is populated for return statements
}
void dat_shell(){
printf("Congrats! I will now execute /bin/sh\r\n- b1ack0wl\r\n");
system("/bin/sh -c");
//execve("/bin/sh","-c",0);
//execve("/bin/sh", 0, 0);
exit(0);
}
然后可以用我们的gdb 来调试程序,
然后用 工具来确定我们的偏移,
把offset 文件里面的 字符当成参数传进去就可以了
然后把 ra(返回地址) 传回去 查找偏移就可以了
然后我们 写出pyload 成功的没有拿到flag。。
仔细观察一下 , 发现 其实已经到了 后门函数,,但是在后门函数发现了错误
这里我具体查了一下 mips的 指令集,
gp 是存在一个全局指针 它将指向运行决定的静态数据的一个位置 ,, 利用pg 作级指针 然后 在 取数值的时候 直接 + - 就可以了 一个指令就一把梭了
然后我们看一下后门函数
这里 gp 已经初始化了 而且 唯一不确定的值就是t9
这里查了一下资料 发现:
在mips中,跳转的方式有:
1.设置寄存器t9,跳转到寄存器t9。
2.在执行完函数func之前,把要跳转的地址address保存在ra寄存器,执行完函数func后可跳转。
位于MIPS上常用的函数调用机制中(调用约定):$t9寄存器首先会被设置为目标函数的地址,然后会使用诸如jalr $t9之类的指令进行跳转。然后全局指针$gp会使用$t9进行初始化,用于计算各种偏移地址,特别是即将被调用的其他函数的偏移地址,因此,我们一定要保证这个值的正确性
虽然看的比较模糊 但是每次调用函数初始化的时候 都会有 t9 还有 pg的 身影 那么就代表了这个函数的重要性
这里有个很好用的 rop
__thread_start 的第二行, 在 libc.so.0 里面
这个 可以让t9
指向函数的起始地址
基址 加 偏移可以直接rop
这里 只要不关机 加载基址都不会变化 (或者 可能关机每次都一样?)
然后 我们就可以写出payload了
可以看出我们已经到了我们想要的入口点了,,,
stack_bof_02
最近再看 0day的那本书 感觉看的差不多了 然后打算把这个坑来填一下,,然后去看看漏洞战争那本书。。。
https://www.anquanke.com/post/id/171918
https://www.anquanke.com/post/id/86747