0.前言
这个例题似乎是没法完成最终的getshell的,因为缓冲区离got表太近了,会出问题。
1.思路
当程序开了PIE或者ASLR保护后,函数的地址会被随机化,这时如果要返回到某个函数的话就需要泄露地址。
以开了ASLR的为例,此时系统函数的地址是随机的,但是函数在同一libc中的偏移量是确定的。而我们知道,一个系统函数,如puts函数,在程序中被调用过后,其地址就会存在got表中,此时可以通过泄露其地址,再通过偏移即可泄露libc的基地址。此时如果要调用system或execv函数,则再用libc基地址加上对应的偏移即可。