[原创][04] HEVD 内核漏洞之IntegerOverflow
0x00 前言
这一节开始,我们学习整数溢出相关漏洞。
实验环境:Win10专业版+VMware Workstation 15 Pro+Win7 x86 sp1
实验工具:VS2015+Windbg+KmdManager+DbgViewer
有关于环境和工具问题的,可以参考我的第一篇文章。
0x01 漏洞原理
整数溢出
整数分为有符号和无符号两种类型,有符号数以其最高为作为其符号位,即正整数最高为0,负整数最高为为1,而无符号数无此类情况,其取值范围是非负数。平常在编程时。最常用到的整型变量有 short int(2B),unsigned int(2B),int(4B)和long int(4B)。不同类型的整数在内存中均有不同的取值范围,当我们向其存储的数据超过该类型整数的最大值,就会导致整数溢出。溢出后的数据,可能会被截断,而造成程序出现错误。
Demo(基于栈的整数溢出)
#include "stdio.h"
#include "string.h"
int main()
{
int i;
char buf[8];
unsigned short int size;
char overflow[65550];
memset(overflow,65,sizeof(overflow));
printf("Input the num:\n");
scanf("%d",&i);
size=i;
printf("size:%d\n",size);
printf("i:%d\n",i);
if(size>8)
return -1;
memcpy(buf,overflow,i);//栈溢出
return 0;
}
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
复制成功
