欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创][04] HEVD 内核漏洞之IntegerOverflow

[原创][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。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功