堆利用之fastbin attack 三种典型的可以利用fastbin attack的漏洞1.double free 当程序有double free漏洞时,可以通过申请两个fastbin大小的堆块1和2,以0x30举例,然后分别释放chunk1和chunk2,fastbin的结构如下图 这时由于有double free漏洞,再释放chunk 1,链表就会变成这样一个循环链表: 表头指向chunk1,chunk1指向chunk2,c 2024-05-04
unsorted_bin_attack unsorted bin attack关于这个手法的学习,必须要搞清楚两件事,不然理解起来挺懵的。第一、从unsorted bin中取堆块的时候,是从尾部取的堆块。 上图变为结构图为: 当从unsorted bin中拿取最后一个堆块时(unsorted bin中堆块是从最后一个取的,跟fastbin和tcachebin还不一样),会触发下面这部分的操作。 1234victim = unsort 2024-05-04
heap mmp函数:将硬盘上的一块区域映射为虚拟内存void *mmap(void addr, size_t length, int prot, int flags, int fd, off_t offset); 创建共享内存映射参数:addr: 指定映射区的首地址。通常传NULL,表示让系统自动分配 length:共享内存映射区的大小。(<= 文件的实际大小,通常为文件大小) prot: 2024-05-04
stack_Smach stack smach 这类型的题目通常会存在通常会存在canary保护,因为这是利用canary的报错时会程序会执__stack_chk_fail 函数来打印 __libc_argv[0] 指针所指向的字符串(默认存储的是程序的名称),我们就可以通过栈溢出来覆盖到 __libc_argv[0] 为我们想要泄漏的地址,就能泄露对应的内容。 例题(nssctf easyecho) 首先检 2024-05-04
SROP SROPSROP(Sigreturn Oriented Programming)利用了linux下15号系统调用的->rt_sigreturn SignalSignal是Unix系统中的一种通信机制,通常用于在进程之间传递信息,也可以说是软中断信息常见于在一个进程中,内核向其发送软中断信号,该进程将暂时被挂起,系统进入内核态因为是暂时被挂起,所以系统会保留该进程的上下文 。即将所有的寄存器压 2024-05-04
pie保护 PIE保护PIE全称是position-independent executable,中文解释为地址无关可执行文件,该技术是一个针对代码段(.text)、数据段(.data)、未初始化全局变量段(.bss)等固定地址的一个防护技术,如果程序开启了PIE保护的话,在每次加载程序时都变换加载地址,从而不能通过ROPgadget等一些工具来帮助解题 下面通过一个例子来具体看一下PIE的效果 程序源码 1 2024-05-04