前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MIPS-DVRF_stack_bof_1

MIPS-DVRF_stack_bof_1

作者头像
偏有宸机
发布2021-04-02 14:53:35
7610
发布2021-04-02 14:53:35
举报
文章被收录于专栏:宸机笔记宸机笔记宸机笔记

程序分析

首先将qemu-mipsel-static复制到squashfs的根目录,让我们可以正常运行程序

通过IDA的简单分析大致可以得出程序需要添加参数运行,如上图所示

而漏洞点就出现在程序调用strcpy函数复制用户传入的参数时,造成了栈溢出的情况

利用过程

而具体的溢出点,从静态的反汇编代码中看并不是很直观,所以我们可以用cyclic配合gdb 动态调试来确认。

使用下面命令来运行程序到1234端口,并加上python的cyclic函数来生成300个有序的字符

接下来使用gdb-multiarch来连接程序

并在gdb开始时输入

set architecture mips

设置程序的架构为mips

set endian little

设置字节序为小端序

target remote :1234

连接远程的主机端口

输入c运行程序可以看到程序直接断到了0x63616162处也就是我们填充的字符串“baac”

最后使用cyclic命令可自动计算出溢出位为204,便可以控制程序的pc寄存器

可以控制pc寄存器,便意味至我们可以让其直接运行到程序中的dat_shell函数上并getshell

但是并不能控制pc直接跳转到0x400950处,因为会让直接报错,出现内存错误

所以控制程序到0x400958即可,继续运行程序,修改payload如下

❯ sudo chroot . ./qemu-mipsel-static ./pwnable/Intro/stack_bof_01 "$(python -c "from pwn import *;print 'A'*204 + p32(0x40095c)")"

至此完成该程序的栈溢出漏洞利用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序分析
  • 利用过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档