ez_heap 发现2024ciscn ez_heap很少有用environ泄露栈地址的方法做这道题的,借此来梳理一下 environ泄露栈地址的过程。 标签 libc2.35, 堆溢出 ,orw , uaf, off by one, environ泄露栈地址 environ 先来介绍一下environ,在Linux C中,environ是一个全局变量,它储存着系统的环境变量。它储存在libc中

简介 本文章为模糊测试的零基础教学,适合了解 pwn 且会使用 Linux 的 gcc、gdb 的读者。模糊测试旨在通过向程序投喂数据使其崩溃,从而获取崩溃样本以寻找程序漏洞。本文前半部分介绍 AFL++ 的 docker 环境配置,帮助读者解决入门时的环境和网络问题; 后半部分全面解析 afl 的模糊测试流程与源码架构,包括漏洞挖掘实战和原理机制解析。通过本文,读者可以快速入门模糊测试,并深入了

适用版本:glibc2.23 到目前最新的 2.36 利用条件: 可以任意地址写一个堆地址(通常使用 large bin attack) 能够从 main 函数返回或者调用 exit 函数 可以泄露 libc 地址和堆地址 链子 exit->_dl_fini 原理分析 link_map 结构体的存储方式和堆块链表类似,是通过 l_next 和 l_prev 指针来连接的,而这个链表的头指

使用版本 2.31-2.34 满足条件: 1.可以通过large bin attack或者其他 来覆盖_IO_list_all为堆地址 并且伪造IO_file 2.存在calloc函数 因为一般用到pig 是通过malloc memcpy free来进行的 3.存在tcache_stashing unlink 前置知识学习:2.31版本后的large bin attack的利用,tcache_st

适用版本 glibc 2.23--2.35版本中,该手法均可用 使用条件: 能向 __printf_function_table 中写入任意数据,使其不为空 能向 __printf_arginfo_table 中写入一个可控地址 通过条件 2 ,让 __printf_arginfo_table[spec] 为 backdoor 或者 ogg 地址 漏洞原理解析 链条为下面四个部分,简单来说就是

off-by-null 利用思路 溢出字节为可控制任意字节:通过修改大小造成块结构之间出现重叠,从而泄露其他块数据,或是覆盖其他块数据。也可使用 NULL 字节溢出的方法 溢出字节为 NULL字节:在 size 为 0x100 的时候,溢出 NULL 字节可以使得 prev_in_use 位被清(1) 这时可以选择使用 unlink 方法进行处理,在unlink之前应当先free前面的堆块。(2

效果是执行一次call,一般都是打ogg 这个spec对应的字符对应的偏移就是其ASCII码 漏洞原理 printf 函数通过检查 __printf_function_table 是否为空,来判断是否有自定义的格式化字符 若为printf类格式字符串函数,则会根据格式字符串的种类去执行 __printf_arginfo_table[spec] 处的函数指针 劫持方法 劫持 __pri

orw 沙箱机制,英文sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。 如图禁用execve使得我们不能通过系统调用execve拿到shell,因此只能通过调用open, read, write的来读取并打印flag 内容 开启方式 prctl函数调用 secc

描述 Windows VPN中的PPTP协议基于通过套接字实现,Windows 内核中的套接字 – Winsock 内核 (WSK):https://docs.microsoft.com/en-us/windows-hardware/drivers/network/winsock-kernel-overview。主要以API的形式提供服务,WSK API 通常的使用方式是通过一组事件驱动的回调函数

1、协议大致过程 tcp三次握手 控制连接隧道创建 链接控制协议配置 认证 数据交互 2、相关库分析 在我的代码编写过程中,主要用到两个python库:socket、scapy 首先说明,两个库都很强大,为什么不用一个那?当然是因为我代码能力较菜,分别有解决不了的问题。那么,我在编写过程中分别用了各自库的哪些? 2.1、Socket 这个库是一个网络编程的底层库,可以用来实现大部分的网络协议,

函数CQmPacket::CQmPacket分析 对UserMessage包各部分的处理 已经通过IDA反编译了该函数,但都是伪代码,基本读不懂什么意思,还需要进一步反编译分析。 从函数名猜测,该函数用来处理客户端消息队列数据报,所以直接用发送的数据包进行猜测。函数主要是对几个参数进行操作,再返回一个值。那么就先从几个参数入手,分别分析出他们是什么。 参数一:是数据包本身 参数二:是BaseHea

mqac文件函数ACDeviceControl漏洞分析 函数描述 在Windows中,驱动程序使用设备控制代码(Device Control Codes,即IOCTLs)来接收来自应用程序的命令,或者向应用程序提供信息。 解析从用户空间传来的指定命令(如打开、读取、写入或者配置设备的操作)。 在硬件层面上执行这些操作。 将结果返回给发起请求的应用程序。 函数分析 ACDeviceControl

exit_hook函数介绍 使用版本:glibc2.34之前 链子:__run_exit_handlers---> _dl_fini 存在情况通过libc_start_main进入 或者 使用了exit函数 动态调试过程: 我们通过观看_dl_fini的源码来看里面发生了什么: #ifdef SHARED int do_audit = 0; again: #endif for

从一道pwn题深入理解exp的编写 1.前言 在学习pwn的时候,利用ida pro和gdb可以调试出漏洞,但到了exp编写的时候,就会非常犯难,虽然pwntools官网有针对各个模块的讲解,但是对于大部分想入门二进制的师傅们仍是一大挑战。 本篇通过对一道ret2text(所有保护全开)的例题进行讲解,全面讲述vul利用方法和exp的编写。 2.例题及exp 例题,exp,libc,ld都在文末附

House of banana house of banana是星盟的HA1VK师傅最开始发现的一种攻击方式,也是一个非常方便的攻击方法(应该是直到2.36都可以使用),利用的条件也比较少,程序能够显式的执行exit函数或者通过libc_start_main启动的主函数,且主函数能够结束,这两个条件满足其中之一就可以了,再就是可以进行largebin attack和堆地址,libc地址的泄露 因为
