第五章开始上强度了宝贝

这一章主要是对缓冲区的攻击,通过 metasploit 模块的审计和编写深入浅出对缓冲器攻击的理解。

主要是栈溢出和堆溢出

其中栈溢出主要有两种方法:覆盖返回地址覆盖异常处理结构

堆溢出只介绍了空闲堆块操作引起的堆缓冲区溢出:堆块有若干指针指向空闲堆块,当相邻的堆块溢出时将覆盖其他堆块的指针。

在使用缓冲区溢出攻击的时候需要考虑坏字符的情况。

Windows 和 Linux 在缓冲区方面的差异:

  1. windows 的栈的内存地址的首字节均为 0X00NULL ,通常是需要考虑的坏字符,而 linux 中栈的内存地址没有空字节,无需考虑坏字符导致输入截断的问题。
  2. windows 会向废弃的栈写入一些随机数据,而 Linux 不做任何操作
  3. windows 通过 API 及内核处理程序调用链来完成系统功能调用,Linux 通过 int 80 中断处理来调用系统功能,所以在实现 shellcode 存在不小的差异
  4. Linux 引入 GOT 表和 PLT 表,使用多种复位项,实现了位置无关代码,达到了更好的共享性能

屮,实践作业里面的 IDA 和 OllyDbg 根本就没用过,一点 pwn 的经验都没有。我需要沉淀!稍等一下,很快回来~

他妈的 pwn 这种真不是我说学就学得会的