摘要:
MD5 百度解释: MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rive 阅读全文
摘要:
常见文件头、文件尾 1、图片 JPEG 文件头:FF D8 FF 文件尾:FF D9 TGA 未压缩的前4字节 00 00 02 00 RLE压缩的前5字节00 00 10 00 00 PNG 文件头:89 50 4E 47 0D 0A 1A 0A 文件尾:AE 42 60 82 GIF 文件头:4 阅读全文
摘要:
IO_FILE write|FSOP FSOP 的核心思想就是劫持_IO_list_all 的值来伪造链表和其中的_IO_FILE 项,但是单纯的伪造只是构造了数据还需要某种方法进行触发。FSOP 选择的触发方法是调用_IO_flush_all_lockp,这个函数会刷新_IO_list_all 链 阅读全文
摘要:
IO_FILE leak|IO_FILE的结构 _IO_FILE_plus的结构如下(glibc-2.33 libioP.h) struct _IO_FILE_plus{ FILE file; const struct _IO_jump_t *vtable;}; 在libc-2.23版本中,有个全局 阅读全文
摘要:
largebin attack|概述 前言:用的glibc版本是2.33 ●Largebin时glibc中, 超过0x400大小的空闲内存所构成的链表 ●Largebin的特质和unsortbin类似, 只是多了一个bk_next_size和fd_ next_ size的指针,用于指向比当前堆块大小 阅读全文
摘要:
Tcache attack|Tcache bin的结构 glibc用tcache_entry和tcache_perthread两个结构体来管理tcache bin 1、tcache_entry 2、当我们分配的chunk释放后进入tcache bin时,就会按这个结构体来按链表存储,next指向 下 阅读全文
摘要:
Fastbin|定义 Fast Bin分类的chunk的大小为32~128(0x80)字节,如果chunk在被释放时发现其大小满足这个要求,则将该chunk放入Fast Bin,且在被释放后不修改下一个chunk的PREV_INUSE标志位。Fast Bin在堆管理器中以单链表的形式存储,不同大小的 阅读全文
摘要:
offbyone|介绍 CTFWiki offbynull的前世今生 严格来说 off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。 堆叠 先来认识堆叠,因为off by系列的目的之一,就是 阅读全文
摘要:
unlink|原理 1、简介:俗称脱链,就是将链表头处的free堆块unsorted bin中脱离出来,然后和物理地址相邻的新free的堆块合并成大堆块(向前合并或者向后合并),再放入到unsorted bin中。 2、危害原理:通过伪造free状态的fake_ chunk, 伪造fd指针和bk指针 阅读全文
摘要:
UAF 全称:use after free 顾名思义,某块内存在释放后还能被用户使用 一般存在于,free后没有将指针置为NULL,导致野指针的存在 阅读全文
摘要:
堆概述 是虚拟地址空间的一块连续的线性区域 提供动态分配的内存,允许程序申请大小未知的内存 在用户.与操作系统之间,作为动态内存管理的中间人 响应用户的申请内存请求,向操作系统申请内存,然后将其返回给用户程序 管理用户所释放的内存,适时归还给操作系统 堆(chunk)内存是一种允许程序在运行过程中动 阅读全文
摘要:
整数的运算|初步认识整数溢出 CTFWiki:https://ctf-wiki.org/pwn/linux/user-mode/integeroverflow/introduction/ 在计算机导论、数字逻辑和汇编等课程中,我学到了原码、反码、补码的概念,对于其运算的法则也有了了解。 计算机并不能 阅读全文
摘要:
seccomp|绕过沙箱 常见的沙箱绕过思路 ORW Open/openv Read/readv Write/writev 使用开源工具查看seccomp规则 安装链接:https://github.com/david942j/seccomp-tools 特殊的沙箱绕过思路-未检查架构 i386与x 阅读全文
摘要:
概述 沙箱是什么? 沙箱(sandboxie),也叫沙盘,和军事上的意义相似,所有在沙箱中运行的程序都是模拟演习,并不是真刀真枪。沙箱的工作原理是:将程序运行在一个隔离的空间内,且在沙箱中运行的程序可读不可写,从而避免程序对电脑的其它程序和数据造成永久性的修改或造成破坏。官方用一个很形象的比喻说明了 阅读全文
摘要:
概述 有时候输入的字符串并不是保存在栈上的,这样没法直接在栈上布置地址去控制printf函数的参数,这种情况下的利用相对比较复杂。 程序在调用时会将rbp压入栈中或者将一些指针变量存在栈中等操作,所以栈上会有很多保存着栈上地址的指针,而且容易找到三个指针p1、p2、p3,形成p1指向p2、p2指向p 阅读全文
摘要:
综述 通过格式化字符串漏洞可以进行任意内存的读写。由于函数参数通过栈进行传递,因此使用%X$p(X为任意正整数)可以泄露栈上的数据。并且,在能对栈上数据进行控制的情况下,可以事先将想泄露的地址写在栈上,再使用%X$p,就可以以字符串格式输出想泄露的地址。 除此之外,由于"%n"可以将已经成功输出的字 阅读全文