缓冲区溢出及注入分析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
缓冲区溢出与注⼊分析 缓冲区溢出与注⼊分析 前⾔ 进程的内存映像 常⽤寄存器初识 call ,ret 指令的作⽤分析 什么是系统调⽤ (以 Linux 2.6.2 1 版本 x86 平台为例) 什么是 ELF ⽂件 程序执⾏基本过程 Linux 下程序的内存映像 栈在内存中的组织 缓冲区溢出 实例分析:字符串复制 缓冲区溢出后果 缓冲区溢出应对策略 如何保护 ebp 不被修改 如何保护 eip 不被修改? 缓冲区溢出检测 缓冲区注⼊实例 准备:把 C 语⾔函数转换为字符串序列 注⼊:在 C 语⾔中执⾏字符串化的代码 注⼊原理分析 缓冲区注⼊与防范 后记 参考资料 前⾔ 虽然程序加载以及动态符号链接都已经很理解了,但是这伙却被进程的内存映像 给”纠缠住。看着看着就⼀发不可收拾——很有趣。 下⾯⼀起来探究“缓冲区溢出 注⼊” 问题 (主要是关⼼程序的内存映像)。 进程的内存映像 永远的 Hello World,太熟悉了吧, #include stdio.h int main(void) { printf(Hello World\n); return 0; 如果要⽤内联汇编 (inline assembly)来写呢? 1 /* shellcode.c */ 2 void main() 3 { 4 __asm__ __volatile__(jmp forward; 5 backward: 6 popl %esi; 7 movl $4, %eax; 8 movl $2, %ebx; 9 movl %esi, %ecx; 10 movl $12, %edx; 11 int $0x80; /* system call 1 * 12 movl $1, %eax; 13 movl $0, %ebx; 14 int $0x80; /* system call 2 * 15 forward: 16 call backward; 17 .string \Hello World\\n\;); 18 看起来很复杂,实际上就做了⼀个事情,往终端上写了个 Hello World 。不过这个 ⾮常有意思。先简单分析⼀下流程: 第 4 ⾏指令的作⽤是跳转到第 15 ⾏ (即 forward 标记处),接着执⾏第 16 ⾏。 第 16 ⾏调⽤ backward,跳转到第 5 ⾏,接着执⾏ 6 到 14 ⾏。 第 6 ⾏到第 11 ⾏负责在终端打印出 Hello World 字符串 (等⼀下详细介 绍)。 第 12 ⾏到第 14 ⾏退出程序 (等⼀下详细介绍)。 为了更好的理解上⾯的代码 后续的分析,先来介绍⼏个⽐较重要的内容。 常⽤寄存器初识 X86 处理器平台有三个常⽤寄存器:程序指令指针、程序堆栈指针与程序基指针: 寄存器 名称 注释 EIP 程序指令指针通常指向下⼀条指令的位置 ESP

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档