整形溢出基础
C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无符号,每种数据类型都有各自的大小范围(数据类型的大小范围是编译器决定),当程序中的数据超过其数据类型的范围,则会造成溢出,整数类型的溢出被称为整数溢出。
C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无符号,每种数据类型都有各自的大小范围(数据类型的大小范围是编译器决定),当程序中的数据超过其数据类型的范围,则会造成溢出,整数类型的溢出被称为整数溢出。
FILE 在 Linux 系统的标准 IO 库中是用于描述文件的结构,称为文件流。 FILE 结构在程序执行 fopen 等函数时会进行创建,并分配在堆中。
tcache 是 glibc 2.26 (ubuntu 17.10) 之后引入的一种技术,目的是提升堆管理的性能。但提升性能的同时舍弃了很多安全检查,也因此有了很多新的利用方式。对 tcache 的深入认识去这里。这里主要记录一下如何 PWN tcache。
House Of XXX 是 2004 年《The Malloc Maleficarum-Glibc Malloc Exploitation Techniques》中提出的一系列针对 glibc 堆分配器的利用方法。 由于年代久远《The Malloc Maleficarum》中提出的大多数方法今天都不能奏效,我们现在所指的 House Of XXX 利用相比 2004 年文章中写的已有较大的不同。
堆溢出是指程序向某个堆块中写入的字节数超过了堆块本身可使用的字节数(之所以是可使用而不是用户申请的字节数,是因为堆管理器会对用户所申请的字节数进行调整,这也导致可利用的字节数都不小于用户申请的字节数),因而导致了数据溢出,并覆盖到物理相邻的高地址的下一个堆块。堆溢出漏洞轻则可以使得程序崩溃,重则可以使得攻击者控制程序执行流程。
作为一名WEB菜狗,今天决定入坑二进制了,出于极大的好奇心和求知欲(其实就是自己太菜了,急需拓展知识啊~),加上也有些计算机原理的一些基础,想着不能把学的东西给废掉、扔掉,所以决定入坑!