从零开始的 Pwn 之旅 - PIE 和 ALSR
总结摘要
从零开始的 Pwn 之旅 - PIE 和 ALSR
前言
- PIE(Position Independent Executable)和ASLR(Address Space Layout Randomization)是现代操作系统中常用的安全机制。通过随机化程序的内存布局,PIE和ASLR可以有效地防止攻击者利用已知的内存地址进行攻击。
ALSR 安全保护等级可以使用如下命令查看:
0: 禁用 ASLR。1: 启用 ASLR,但仅对共享库和栈进行随机化。2: 启用 ASLR,对所有内存区域(包括堆、栈和共享库)进行随机化。
若要禁用 ASLR,可以使用以下命令:
| |
若程序启用 PIE 保护机制
- 程序的加载基址由操作系统决定
- 程序中只包含偏移地址
- 需要先泄露代码段基址,才能够使用程序中的 gadget
PIE 下断点
使用 gdb 运行的程序默认关闭 ASLR
如果程序被去符号了, 需要根据地址下断点
PIE 相关编译参数
-fPIE:编译器选项,用于生成位置无关的代码(Position Independent Code, PIC)。这使得生成的代码可以在任意内存地址运行。-no-pie:链接器选项,用于禁用位置无关可执行文件(PIE)的生成。