在出PWN的题,记录一下怎么编译
NX
指令 | 翻译 |
---|---|
-z execstack | 可以执行栈上的数据 |
-z noexecstack | 不让执行栈上的数据,于是JMP ESP就不能用了 |
Canary
指令 | 翻译 |
---|---|
-fno-stack-protector | 关闭栈溢出检测 |
-fstack-protector | 仅为char类型开启栈溢出检测 |
-fstack-protector-all | 为所有类型开启栈溢出检测 |
检测方法
在入栈前保存一个随机数
在返回前比对现在的随机数和保存的随机数
如果不一样就退出程序并报错
PIE
指令 | 翻译 |
---|---|
-no-pie | 关闭PIE(每个函数地址固定) |
-pie | 开启PIE(每个函数地址随机) |
RELRO
指令 | 翻译 |
---|---|
-z norelro | 关闭RELRO,对GOT表具有写权限 |
-z lazy | 部分开启RELRO |
-z now | 完全开启RELRO,对GOT表没用写权限 |
文章评论