一基于Windows, Linux研究缓冲区溢出的原理
缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。
二基于Windows, Linux研究缓冲区溢出的攻防
具体过程严格按照https://www.shiyanlou.com/courses/231/labs/749/document上面所描述。
1.漏洞程序
存漏洞程序stack.c,如下图
对其权限做更改,更改前后的权限变化,如下图
2.攻击程序
同样是按照文档中的代码存一个exploit.c,先存着。
3.反汇编漏洞程序stack
使用gdb时遇到了问题,因为在设置断点时输错了地址,所以在输入r时执行失败,显示无法插入断点。
解决方法:使用help all查看gdb命令,找到清除断点的命令删除所有断点,重新设置,如图,
4.计算shellcode地址
我的str地址是0xffffd350,加上十进制的100后为0xffffd3b4,对应修改exploit.c源文件,如图,
5.执行结果
编译执行,结果如图,