前言
学习pwn,了解到的四种basic protection
1.Stack Guard
• 做完function prologue①的时候回将随机生成的乱数压入stack中,function return前会检查乱数是否又被更动过,若发现被更动则立即结束程式
• 又称canary 金丝雀②
注释:
①function prologue:移动 RSP 和保存寄存器的动作一般处在函数的开头,叫做 function prologue
②canary:看视频讲的有一个了解,在煤矿中有毒或易燃气体的存在,常引起井下爆炸,或发生煤矿工人中毒的事故,而金丝雀对于这类气体很敏感,矿井中存在的微量有毒气体,在对矿工尚未造成威胁时,金丝雀就会出现窒息中毒的症状。所以,一些矿工在下井时带着金丝雀,将它们作为“生物报警器”。
2.DEP
• Data execution prevention 数据执行保护
• 可执行的地方不能写,可写的地方不能执行
• 又称NX
3.ASLR
• Address Space Layout Randomization 地址空间布局随机化
• 每次程序执行时stack、heap、library 位置都不一样
• 一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的
4.PIE
• Position Independent Execution
• 开启后,code和data也还会ASLR