Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)
Posted momoli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)相关的知识,希望对你有一定的参考价值。
(1)原理:
地址空间布局随机化(ASLR)是随机化的利用缓解技术:堆栈地址,栈地址,共享库地址。一旦上述地址被随机化,特别是当共享库地址被随机化时,我们采取的绕过NX bit的方法不会生效,因为攻击者需要知道libc基地址。而此时我们可以采用return-to-plt技术,在这种技术中,而不是返回到libc函数(其地址是随机的)攻击者返回到一个函数的PLT(其地址不是随机的-其地址在执行之前已知)。由于‘[email protected]‘不是随机的,所以攻击者不再需要预测libc的基地址,而是可以简单地返回到“[email protected]”来调用“function”。
(2)漏洞代码
#include <stdio.h> #include <string.h> /* Eventhough shell() function isnt invoked directly, its needed here since ‘[email protected]‘ and ‘[email protected]‘ stub code should be present in executable to successfully exploit it. */ void shell() { system("/bin/sh"); exit(0); } int main(int argc, char* argv[]) { int i=0; char buf[256]; strcpy(buf,argv[1]); printf("%s\\n",buf); return 0; }
编译文件
(2)反汇编可执行文件‘vuln‘,我们可以找到‘[email protected]’和 ‘[email protected]’的地址。
(3)用IDA查看vuln中“/bin/sh”的地址
(3)攻击代码如下:
(4)运行攻击代码,获得root shell权限
以上是关于Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)的主要内容,如果未能解决你的问题,请参考以下文章
linux(x86) exploit 开发系列4:使用return2libc绕过NX
SploitFun Linux x86 Exploit 开发系列教程
linux(x86) exploit 开发系列6:使用return-to-plt绕过ASLR
linux(x86) exploit 开发系列5:使用ret2libc链绕过NX