缓冲区溢出攻击
一、实验目的:
加深对IA-32函数调用规则和栈帧结构的理解
二、实验要求:
构造5个攻击字符串,对目标程序实施缓冲区溢出攻击。
5次攻击难度递增,分别命名为
Smoke (让目标程序调用smoke函数)
Fizz (让目标程序使用特定参数调用Fizz函数)
Bang (让目标程序调用Bang函数,并篡改全局变量)
Boom (无感攻击,并传递有效返回值)
Nitro (栈帧地址变化时的有效攻击)
需要调用的函数均在目标程序中存在
三、实验内容:
getbuf函数:存在缓冲区溢出漏洞,buf只有0x28字节长度。
栈:
Smoke:
任务是让目标程序调用smoke函数,观察这个栈,要想调用smoke函数就要把smoke函数的地址放到getbuf上面的返回地址处。
找到smoke函数的地址:0x8048c28
接下来,只要构造0x28+4+4=48字节长度的字节码就可以将返回地址覆盖,最后四个字节的内容放smoke函数的地址保证返回地址是被smoke函数的地址覆盖,因为是小端存储,也就是:28 8c 04 08,前面放一些00凑出44个字节。