buuctf-pwn jarvisoj_level5(64位ret2libc)题解(学习过程持续更新)

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

可以看到这是一个64-bit的文件,NX 保护机制开启

将文件拖入ida-64,按F5,将汇编代码转换成c语言代码,得到

可以看到明显的read 栈溢出,需要填充offset=0x80+8的垃圾数据直到return address

而且这个题没有system函数,按shift+F12我们也没有看到/bin/sh,所以这个题需要我们自己泄露system和/bin/sh的地址,并且这个题没有给libc文件

回到虚拟机

ROPgadget --binary pwn --only "pop|ret"

得到了pop_rdi_ret = 0x4006b3,pop_rsi_r15_ret = 0x4006b1

nano exp.py 开始写攻击脚本

payload:我们利用write函数,输出write@got里储存的write函数的真实地址

然后利用write函数的真实地址和write函数在libc的偏移地址,算出基址,然后利用这个基址算出system函数的真实地址和/bin/sh的地址,用于构造payload2,并且在payload里我们我们最后返回到了vulnerable_function这个函数,重新栈溢出,填写我们的ROP链

保存退出

python3 exp.py

0

cat flag

此题完

相关推荐
坤坤子吖5 小时前
Linux 线程同步与互斥——互斥锁
linux·服务器·c++·笔记·学习
撩得Android一次心动5 小时前
Jetpack Compose 知识点整理3【个人用】
android·笔记·学习·kotlin·android compose
阿梦Anmory6 小时前
规划领域定义语言(PDDL)学习笔记
笔记·学习
绛橘色的日落(。・∀・)ノ6 小时前
C#学习笔记
笔记·学习·c#
留岁6 小时前
Git 命令行学习记录
git·学习·elasticsearch
小黄人软件6 小时前
aipy学习 核心循环
学习
小弥儿6 小时前
GitHub今日热榜 | 2026-10-19:智能体生态包场的一天
学习·开源·github
kkkkkkkkkk_Z6 小时前
新手自学嵌入式 | 学习日记:EPIT/GPT定时器、输入捕获与PWM、UART通信与Modbus协议
单片机·gpt·学习
云水初7 小时前
【项目篇】基于LanGraph的自动处理客服邮件的 Agent汇总
开发语言·笔记·python·学习·fastapi·langgraph
qq_443132417 小时前
数字资产安全治理平台是什么:定义、能力边界与典型应用场景
安全