总體而言主要分为两个步骤, 先是找到危险函数确定存在栈溢出漏洞, 然后就是通过调试分析计算出栈溢出攻击利用需要溢出的偏移量, 最后就通過覆盖地址的方法来直接或者间接地控制程序执行流程
通过寻找危险函数,我们快速确定程序是否可能有栈溢出以及有的话,栈溢出的位置在哪里常见的危险函数如下
计算我们所要操作的地址与我們所要覆盖的地址的距离。常见的操作方法就是打开 IDA根据其给定的地址计算偏移
1. 相对于栈基地址的的索引, 可以直接通过查看 EBP 相对偏移获得
2. 相对应栈顶指针的索引, 一般需要进行调试, 之后还是会转换到第一种类型
3. 直接地址索引, 就相当于直接给定叻地址
1. 覆盖函数返回地址这时候就是直接看 EBP即可
2. 覆盖栈上某个变量的内容,这时候就需要更加精细嘚计算了
3. 覆盖 bss 段某个变量的内容
4. 根据现实执行情况覆盖特定的变量或地址的内容
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。