第五章开始上强度了宝贝
这一章主要是对缓冲区的攻击,通过 metasploit 模块的审计和编写深入浅出对缓冲器攻击的理解。
主要是栈溢出和堆溢出
其中栈溢出主要有两种方法:覆盖返回地址和覆盖异常处理结构
堆溢出只介绍了空闲堆块操作引起的堆缓冲区溢出:堆块有若干指针指向空闲堆块,当相邻的堆块溢出时将覆盖其他堆块的指针。
在使用缓冲区溢出攻击的时候需要考虑坏字符的情况。
Windows 和 Linux 在缓冲区方面的差异:
- windows 的栈的内存地址的首字节均为
0X00
即NULL
,通常是需要考虑的坏字符,而 linux 中栈的内存地址没有空字节,无需考虑坏字符导致输入截断的问题。 - windows 会向废弃的栈写入一些随机数据,而 Linux 不做任何操作
- windows 通过 API 及内核处理程序调用链来完成系统功能调用,Linux 通过
int 80
中断处理来调用系统功能,所以在实现 shellcode 存在不小的差异 - Linux 引入 GOT 表和 PLT 表,使用多种复位项,实现了位置无关代码,达到了更好的共享性能
屮,实践作业里面的 IDA 和 OllyDbg 根本就没用过,一点 pwn 的经验都没有。我需要沉淀!稍等一下,很快回来~
他妈的 pwn 这种真不是我说学就学得会的