整数溢出漏洞
题目
请在XP VC6生成课本示例4-2的案例(DEBUG模式)。进而,修改input.txt文件,使得程序运行时弹出计算器。
提示:input.txt在利用IDE调试时需要放到cpp文件相对目录下;单独运行exe的时候,需要放到exe所在目录中
解答
课本示例
|
思路
当len1
和len2
均较大时,short all_len = len1 + len2;
使all_len
发生溢出,进入if
代码块,info
长度为len1+len2
,超过short范围,即MAX_INFO
,info
覆盖函数指针fuc_ptr
的值。将原来fuc_ptr
指向func
函数改为指向func1
函数即可
过程
- compile,下断点,debug运行,查看
func
和func1
地址
正常情况下运行弹出记事本
input.txt中应为两段字符串,中间用空格隔开。当栈中info数据超出定义时的限制便会覆盖函数指针的内容,使用ultraedit修改input.txt,将超出部分修改为待调用函数的地址
运行,弹出计算器
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.