本人也是在自学过程主要目的也是记录学习过程有些地方做的不太好都是按照自己理解进行讲解的不专业欢迎大家指出问题此处我将文件命名为level3_x64checksec level_x64查看一下保护机制可以看到这是一个64-bit的文件NX保护机制开启将文件拖入ida-64按F5将汇编代码转换成c语言代码得到可以看到明显的read栈溢出需要填充0x808的垃圾数据直到return address而且这个题没有system函数按shiftF12我们也没有看到/bin/sh所以这个题需要我们自己泄露system和/bin/sh的地址并且这个题没有给libc文件回到虚拟机安装LibcSearcherpip install LibcSearcher --break-system-packages安装完成后我们还需要查找一下pop_rdi_retpop_rsi_retpop_rdx_ret的地址ROPgadget --binary level3_x64 --only pop|ret得到了pop_rdi_ret 0x4006b3pop_rsi_r15_ret 0x4006b1开始写攻击脚本nano exp.py我们来看一下这个攻击脚本发送的第一个payload我们利用write函数输出writegot里储存的write函数的真实地址然后利用write函数的真实地址和write函数在libc的偏移地址算出基址然后利用这个基址算出system函数的真实地址和/bin/sh的地址用于构造第二个payload并且在第一个payload里我们我们最后返回到了vulnerable_function这个函数重新栈溢出填写我们的ROP链保存退出python3 exp.py0应该随便选一个都可以我也没有试其他的cat flag得到flagCTF2{337b45b0-6af1-42dd-8ec3-bd9f6be90d8c}此题完