1、安全编译选项
操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP、ASLR等。在使用gcc进行编译时,可以使用gcc的编译选项来避免堆栈溢出、整数溢出等问题。
2、checksec.sh
Checksec是一个bash脚本,用于检查可执行文件的属性(如PIE,RELRO,PaX,Canaries,ASLR,Fortify Source)。它最初由Tobias Klein编写,原始资料来源www.trapkit.de/tools/checksec.html,github地址:https://github.com/slimm609/checksec.sh
3、ASLR(地址随机化)
ASLR(Address Space Layout Randomization,地址空间布局随机化)是一种针对缓冲区溢出的安全保护技术。借助ASLR,PE文件每次加载到内存的起始地址都会随机变化。目前大部分主流操作系统都已经实现了ASLR,ASLR需要操作系统和程序自身的双重支持。ASLR的是操作系统的功能选项,作用于executable(ELF)装入内存运行时,因而只能随机化stack、heap、libraries的基址
ASLR(地址随机化)
是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射
等线性区布局的随机化,通过增加攻击者预测目的地址的难度