堆概述及其相关数据结构

[TOC] 堆利用 目前堆的实现有很多种,具体如下: dlmalloc – General purpose allocator ptmalloc2 – glibc jemalloc – FreeBSD and Firefox tcmalloc – Google libumem – Solaris 接下来主要以glibc中堆的实现为主进行介绍。 堆概述 内存分配后的系统调用 在我们动态申请和释放内存时,无论是malloc还是free函数,都不是真正与系统交互的函数

整数溢出

[TOC] 整数溢出介绍 C语言中整数的分类及各自的大小范围: 类型 字节 范围 short int 2byte(word) 0~32767(0~0x7fff) -32768~-1(0x8000~0xffff) unsigned short int 2byte(word) 0~65535(0~0xffff) int 4byte(word) 0~2147483647(0~0x7fffffff) -2147483648~-1(0x80000000~0xffffffff) unsigned int 4byte(word) 0~4294967295(0~0xffffffff) long 8byte(word) 正: 0~0x7fffffffffffffff 负: 0x8000000000000000~0xffffffffffffffff unsigned long 8byte(word) 0~0xffffffffffffffff 正是因为这些类型的大小范围的限制导致整数溢出。 整数溢出原理 整数溢出的异常有3种: 溢出 只有有符号数才会发生溢出。 溢出标志

JSON相关

1. JSON的两种结构 两种结构分别为:对象,数组。 对象结构 这种结构以大括号开始和结束,中间有多个以逗号分隔的键值对构成,键值对由冒号分隔。 { key:value, key2:value2, key3:value3, ... }其中的键为字符串,而值可以是字符串,数值,true,false,null,对象或数组。 数组结

Ret2csu

ret2csu 原理 x64中,函数的前6个参数是通过寄存器传参的( 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9),但是大多数情况下,我们很难找到每个寄存器对应的gadgets。这时,我们可以利用x64下的_libc_csu_init中的gadgets。这个函数

格式化字符串漏洞举例

[TOC] 格式化字符串漏洞例子 64位程序格式化字符串漏洞 原理 前六个整形或指针参数依次保存在RDI,RSI,RDX,RCX,R8,和R9寄存器中,如果还有更多的参数的话才会保存在栈上。 例子 这里用的是2017年的UIUCTF中的pwn200GoodLu
0%