CS: APP Attack Lab 缓冲区溢出攻击

CS: APP Attack Lab 缓冲区溢出攻击

💡 原文中文,约4800字,阅读约需12分钟。
📝

内容提要

本文记录了在学校计算机系统课上进行缓冲区溢出实验的过程,实验分为五个阶段,涉及利用溢出技术触发不同函数。每个阶段需确定缓冲区大小和函数地址,并通过汇编代码实现攻击,最终展示在保护机制下利用程序指令完成目标。

🎯

关键要点

  • 实验分为五个阶段,涉及利用缓冲区溢出技术触发不同函数。

  • 第一阶段需要确定缓冲区大小和 touch1 函数的地址,通过 gdb 调试获取相关信息。

  • 第二阶段需要触发 touch2 函数,并将 cookie 值放入寄存器 %rdi 中,使用汇编代码实现。

  • 第三阶段需要传入 cookie 的字符串表示,使用 lea 指令将 cookie 地址放入 %rdi 中。

  • 第四阶段使用 rtarget 作为攻击目标,面对栈保护机制,利用程序中已有的指令实现攻击。

  • 第五阶段需要利用更多的指令在缓冲区外完成将 cookie 的 ASCII 值赋给 %rdi 的操作。

延伸问答

缓冲区溢出攻击的实验分为几个阶段?

实验分为五个阶段。

第一阶段需要确定哪些信息?

第一阶段需要确定缓冲区大小和 touch1 函数的地址。

在第二阶段中,如何触发 touch2 函数?

需要将 cookie 值放入寄存器 %rdi 中,并使用汇编代码实现。

第三阶段的主要任务是什么?

第三阶段需要传入 cookie 的字符串表示,并使用 lea 指令将 cookie 地址放入 %rdi 中。

第四阶段面临哪些保护机制?

第四阶段面临随机化栈地址和栈不可执行的保护机制。

第五阶段的攻击方法与前几阶段有什么不同?

第五阶段需要利用更多的指令在缓冲区外完成将 cookie 的 ASCII 值赋给 %rdi 的操作。

🏷️

标签

➡️

继续阅读