前言玩pwn的时候,有时要用到got表覆写技术,本文在于分享对GOT表覆写技术的理解,铺垫性的基础知识较多,目的在于让初学者知其然,还要知其所以然!
无libc漏洞利用总结
前言通过ROP绕过DEP和ASLR防护,我们要事先得到目标机器上的libc.so或者具体的linux版本号才能计算出相应的offset。在没有目标系统libc文件的情况下,应该如何做呢?这时候就需要通过memory leak(内存泄露)来搜索内存找到system()的地址。,我们可以使用pwntools的DynELF模块来泄漏地址信息,从而获取到shell。通过泄露内存的方式可以获取目标程序libc中各函数的地址,这种攻击方式可以绕过地址随机化保护。下文通过一个例子讨论泄露内存的ROP攻击。
Linux下的保护机制
前言在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了NX、PIE等机制,例如存在NX的话就不能直接执行栈上的code,存在PIE的话各个系统调用的地址就是随机化的。Linux中的保护机制包括canary,NX(no-execute),PIE(position-independent executables),RELRO(read only relocation),FORTIFY等等,暂时没写关于内核安全防护的内容,以后再补充。检查可执行文件属性可使用checksec。