jarvisoj_level0

本文详细解析了JarvisOJ平台上的Level0题目,通过逆向工程手段,利用IDA Pro工具分析了一个简单的hello world程序,展示了如何通过栈溢出攻击修改返回地址,最终获取shell权限的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jarvisoj_level0

如图下载文件

通过命令检查文件类型file level0发现是64位的可执行文件

在这里插入图片描述

然后用64-ida打开

按F5显示伪代码,很简单这是一个hello world的程序
在这里插入图片描述

然后开始分析

可以看到main函数一共调用了三个函数
在这里插入图片描述
然后依次检查函数,检查 通过网上答案发现vunlnerable_function这个函数调用了200h的内存空间,其实作者也看不懂,建议进行这一步时先看看《汇编语言》王爽著。
在这里插入图片描述
点开buf,查看地址发现buf从-0000000000000080地址开始到+0000000000000008的位置返回此处无小端序
在这里插入图片描述
这时思路很明确了,在EBP寄存器中储存的是栈的返回地址+0000000000000008,如果能通过缓冲区溢出,将+0000000000000008中的数据改成之前callsystem函数的起始位置,那么esp将跳转到call system函数中执行,而我们就可以获得到shell的权限
总步骤

  1. 找到call system的函数开始地址(.text:0000000000400596 )这个应该是内存地址吧?不确定,有些文件的文件地址与内存地址不一样滴,但是可以用就暂时不管了 小心小端序!!
  2. 使用栈溢出修改栈帧的返回地址
  3. 进入shell寻找flag
    用pwntools帮我们完成这几步先看看官方文档
    代码如下在这里插入代码片

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值