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

此题完

相关推荐
不庸.37 分钟前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan
旖旎夜光1 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
qq_452396231 小时前
第十篇:《Kafka 安全加固:SASL、SSL、ACL 与多租户隔离》
安全·kafka·ssl
希和20272 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
旖旎夜光2 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
叼烟扛炮7 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain
ppo_wu11 小时前
解决夸克网盘自动修改PDF打开方式的方法
经验分享·安全·网络安全
叼烟扛炮12 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
且从容.13 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd14 小时前
关于 AI 开发相关的一些面经。
笔记·学习