本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题
此处我将文件命名为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

此题完