今天看啥  ›  专栏  ›  看雪学苑

PWN入门-2-LibC取物-Ret2LibC

看雪学苑  · 公众号  · 互联网安全  · 2024-07-22 17:59

文章预览

在 【栈上的缓冲区溢出示例】(https://bbs.kanxue.com/thread-282188.htm) 中介绍过编译器会将数据执行保护机制打开【Linux: NX: No-Execute ,Windows: DEP: Data Execution Prevention 】,该机制开启后,数据所在的内存页就会被标识为不可执行的状态。 栈上存放的都是数据,因此数据执行保护机制打开时,栈所在内存页会变成不可执行的状态,此时再将Shellcode放在栈上,显然Shellcode就无法执行了。 对于GCC编译器来讲,编译选项 -z execstack 和 -z noexecstack 可以打开或关闭数据执行保护机制。 在Linux中,可以通过 maps 虚文件查看内存布局,下面列出了当该机制打开和关闭时,栈所在内存页的状态。 r: 可读, w: 可写, x: 可执行, p: 私有段, s: 共享段 开启数据执行保护机制: 7ffeffee2000-7ffefff03000 rwxp 00000000 00:00 0 [stack] 关闭数据执行保护机制: 7fff4d273000-7fff4d2 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览