译者:飞龙
原文:Bypassing ASLR – Part II
本文承接 @hackyzh 翻译的第六篇。
预备条件:
经典的基于栈的溢出
VM 配置:Ubuntu 12.04 (x86)
这篇文章中,让我们看看如何使用爆破技巧,来绕过共享库地址随机化。
什么是爆破?
在这个技巧中,攻击者选择特定的 Libc 基址,并持续攻击程序直到成功。假设你足够幸运,这个技巧是用于绕过 ASLR 的最简单的技巧。
漏洞代码:
编译命令:
让我们来看看,攻击者如何爆破 Libc 基址。下面是(当随机化打开时)不同的 Libc 基址:
上面展示了,Libc 随机化仅限于 8 位。因此我们可以在最多 256 次尝试内,得到 root shell。在下面的利用代码中,让我们选择0xb7595000作为 Libc 基址,并让我们尝试几次。
0xb7595000
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
Zn风扇 有个问题就是每次启动地址都不一样,那么爆破的时候爆破一次重启一次,爆破目标地址也是不固定的,所以不能说最多256次吧
1. PLT 无论开不开 ASLR,对于一个程序都是不变的。2. x86 的 ASLR 最多变八位(0x000**000),不信你可以拿`ldd`去试试。x64 就没办法了。
hackyzh 可以的,终于有人接下去翻译了[em_13]
飞龙使者 Zn风扇 有个问题就是每次启动地址都不一样,那么爆破的时候爆破一次重启一次,爆破目标地址也是不固定的,所以不能说最多256次吧 1.&am ...
lzldhu 请问 PLT对于一个程序都是不变的是什么意思?对于return 2 PLT实验时开启aslr后vuln模块的基地址也变化了,并非如文中所说的仅.so发生变化,PLT@system也就不固定,那么ret ...
飞龙使者 你到代码段里面找`printf`或者`system`的`CALL`指令,就明白了。