buuctf-pwn [HarekazeCTF2019]baby_rop2(64位ret2libc)题解(学习过程持续更新)

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

此处我将文件命名为pwn

checksec pwn 查看一下保护机制

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

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

可以看到存在read(0,buf,0x100)栈溢出,填充0x20+8的垃圾数据至return address,此题没有内置system函数和/bin/sh,所以我们需要利用printf来泄露read@got里存储的read函数的真实地址,进而得到system函数和/bin/sh的地址,从而构造system("/bin/sh")

返回虚拟机

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

得到pop_rdi_ret = 0x400733

nano exp.py

payload:调用printf函数,泄露read@got里存储的read函数的真实地址,进而得到system函数和/bin/sh的地址

payload2:构造system("/bin/sh"),获得shell

保存退出

python3 exp.py

1

find -name flag

cat ./home/babyrop2/flag

此题完

相关推荐
Nerd(BUG版)24 分钟前
KMP学习day4--Kotlin空安全与泛型
学习·安全·kotlin
東隅已逝,桑榆非晚29 分钟前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
wdyan2971 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
叼烟扛炮2 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮2 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
HUANGZHENXUAN1233 小时前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
Rabitebla4 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
叼烟扛炮4 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
旖旎夜光5 小时前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习
LONGZHIQIN5 小时前
STM32学习笔记
笔记·stm32·学习·arm