(第一次学习缓冲区溢出,全程懵圈。)
一:初探缓冲溢出攻击:
(1)堆栈的基础知识:
1.堆栈遵循的原则:后进先出
2.堆栈涉及两种操作:压栈(push),出栈(pop)
(2)缓冲区溢出的基本原理初探:
1.Strcpy(复制字符串函数)是一个经常引起缓冲溢出的函数。
2.首先看到传递给function的字符串长度要远大于bufftr的大小,并且function没有经过任何长度校验而直接用strcpy将字符串拷如bufftr.
3.当执行strcpy时,程序将256字节的字符串拷入到bufftr中,但bufftr仅能容纳16字节。
二:windows堆栈溢全面解析:
(1)溢出漏洞实例:
1.编译,执行程序:
2.进入汇编模式:Main函数的启动,可以看出调用主函数时堆栈的变化
3.Main函数通过Call@ILT+0(fun) (00401005)指令调用Fun函数,在该指令之前还有两个push指令操作,这两个指令就是将Fun函数的两个实参按照从右像左的顺序压入堆栈。
4.进入Fun函数的第一条指令就是push ebp,即保存地址指针EBP.最后完成了数据覆盖。
(2)堆栈溢出漏的利用:
JMP ESP和覆盖SEH结构
三:经典WIN32堆栈溢出
本地溢出程序,溢出后ShellCode功能时添加用户x,密码x:
网友评论