本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题
此处我将文件命名为pwn,libc.so.6
checksec pwn 查看一下保护机制

可以看到这是一个64-bit的文件,Canary,NX保护开启
将文件拖入ida64,按F5将汇编代码转换成c语言代码,得到

mmap分配了一块地址为0x66660000,大小为4096的内存地址,且可读可写可执行
存在printf(&v7)格式化字符串漏洞,可以用它来泄露canary和libc的地址
存在read(0,&v7,256)栈溢出漏洞,可以用它来构造rop链,调用read函数,然后将orw的shellcode写到可读可写可执行的那块地址里,最后返回那块地址执行shellcode
返回虚拟机
完整exp
