ASLR bypass

ASLR负责堆、栈、LIBC加载基址随机化。

PIE负责代码段(.code)、数据段(.data/.bss)加载基址随机化。

开启aslr和pie后,ret2libc变得特别困难,.plt和.got调用,前者是对ELF文件的offset,后者是对运行加载基址的偏移,调用不了。找了些文件。

https://amriunix.com/post/from-read-glibc-to-rce-x86_64/

上面这遍文章通过read@GLIBC汇编,找到了syscall和ret,用于实现execve('/bin/sh')。


ASLR bypass_第1张图片
ASLR bypass_第2张图片

如果有syscall,就可以变为任意函数,如read变为write,只需要改变rax值即可。牛B。

到这一步,还没有绕过pie,开启pie时,代码里面不是虚拟地址,都是相对地址。继续找。


https://pollevanhoof.be/nuggets/buffer_overflow_linux/5_PIE_bypass

这遍文章讲述通过泄露堆上的RIP来进行后继操作,PIE大概率是爆破,或者memory leak。

你可能感兴趣的:(ASLR bypass)