置顶文章

14k13 分钟

本来想着一篇文章写完glibc2.23how2heap系列,但是太长了,还是分开写吧 # 6.house_of_gods【还没搞明白,先挖个坑】 # 7.house_of_lore 这个漏洞就是利用了申请samll bin后会将bk指到下个chunk上,如果这个chunk是我们想要控制的那么我们就可以申请回来然后利用,在要控制处伪造chunk,使他的fd指向small bin的chunk即可绕过检测(一开始在想既然能直接该想要修改处的值,还伪造干嘛;后面发现这里能改写但是无法getshell,伪造后能利用其返回的ret来getshell) # 1.程序源码 /* Advanced e
45k41 分钟

图床迁移替换: https://vvwwv.oss-cn-nanjing.aliyuncs.com/how2heap 换为 https://blog-vvwwvv.oss-cn-hangzhou.aliyuncs.com/how2heap # 编译及链接 # 首先安装对应glibc版本 ./download 2.23-0ubuntu3_amd64 # 编译程序 gcc -g -no-pie fastbin_dup.c -o fastbin_dup 【这里-g是可以根据代码对应的行数来下断点】 # 链接对应版本的glibc库

文章列表

17k15 分钟

# 一、CVE-2025-32328 在2025-12-01 安全补丁中 # (一) 漏洞原因 # 1. NVD描述 Session.java 的多个函数中存在一个逻辑错误,可能导致攻击者能够查看设备上其他用户的图像。这可能导致本地权限提升,而无需额外的执行权限。利用此漏洞无需用户交互【 Autofill UI 在 system_server 中,用 User 0 的身份,替当前前台用户“代为访问”了 User 0 的资源。 也就是可以使用户的 App 用system_server 用了 User 0 Context 访问 其他用户 下 App / Media / P
6.6k6 分钟

# 格式化字符串函数介绍 参考ctf wiki: 格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串(也就是格式参数说明符,例如%s、%c),根据其来解析之后的参数。通俗来说,格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式。几乎所有的 C/C++ 程序都会利用格式化字符串函数来输出信息,调试程序,或者处理字符串。一般来说,格式化字符串在利用的时候主要分为三个部分: 格式化字符串函数 格式化字符串 后续参数,可选 例子:(这个例子中在第一个参数中设立了三个格式参数说明符,将后续的三个参数按相应格式进行转化) # 格式化字符串函数 常
1.3k1 分钟

# 1.简介(在编译时进行设置): fority是轻微的检测,用于检查缓冲区溢出的错误,在程序采用打量的字符串或者内存操作函数适用,例如:memcpy、memset、stpcpy、strcpy、strncpy、strncat、sprintf、snprintf、vsprintf、gets以及宽字符的变体。 # 2.作用: FORTIFY_SOURCE 是一个 C/C++ 编译器提供的安全保护机制,旨在防止缓冲区溢出和其他与字符串和内存操作相关的安全漏洞。它是在编译时自动插入的一组额外代码,用于增强程序对于缓冲区溢出和其他常见安全问题的防护。FORTIFY_SOURCE 提供了以下主要功
6.2k6 分钟

# 1.Large bin # 1. 在释放堆块时,想要进入large bin的堆块需要大于等于512(1024)字节【用户空间需要大于等于0x3F0,用户空间小于0x3F0进入small bin】 而largebin还要考虑fd_nextsiez和bk_nextsize,这两个是因为,在largebin中,会按着相同大小的chunk归到一起,不同chunk组直接的联系就需要fd_nextsize和bk_nextsize。这里除了每组的第一个chunk ,其他的fd_nextsize和bk_nextsize 都为0 fd_nextsize指向了下一组的第一个chunk bk_nextsize指
1.7k2 分钟

# 前言 ASLR与PIE是不同的,两者不能认为是同一个机制,但是他们都是对地址进行随机化,只不过作用的对象和作用时期不太一样 # 1.ASLR(操作系统的功能): ASLR是Linux操作系统的功能选项,作用于程序(ELF)装入内存运行时。是一种针对缓冲区溢出的安全保护技术,通过对加载地址的随机化,防止攻击者直接定位攻击代码位置,到达阻止溢出攻击的一种技术。 # 打开/关闭ASLR: # 查看ASLR打开情况: sudo cat /proc/sys/kernel/randomize_va_space # 关闭ALSR 1.手动修改(长期生效)
9k8 分钟

【例题ctfshow pwn82】 # 1.用处: 在有溢出而无法泄露内容时可以利用ret2dlresolve来修改解析的函数,从而达到执行想要的函数的目的 # 2.原理: 程序通过动态链接来达到节省空间的目的,动态链接会有一个延迟绑定的特点,将连接的过程推迟到了程序运行时 动态链接中有个重要函数_dl_runtime_resolve(link_map_obj,reloc_index)来对动态链接的函数进行重定位 利用dl_resolve原因: 1、dl_resolve 函数不会检查对应的函数是否越界,它只会根据我们给定的数据来执行(也就是说其可以偏移到我们构造的地方) 2、dl_resolv
1.7k2 分钟

(之前写的没保存,这是第二遍写,我要杀人...) # 栈的结构 # 栈迁移的应用场景 栈迁移主要是为了解决栈溢出空间大小不足的问题,当我们的ROP链过长时很可能栈空间不够,并且ebp之前的空间其实只是填充一些没什么用的数据,所以需要一个新的地址空间来存放当前的payload 我们的栈 # 1. leave和ret命令 leave: mov esp , ebp pop ebp #执行pop时,ebp出栈,并且将esp地址内的值放入ebp 这里要注意 mov esp,ebp是将ebp的地址付给esp,也就是说将esp从栈顶拉下来到ebp的位置,pop ebp是将esp内部的值
1.3k1 分钟

# 概述 由于在pwn题中有时候不给libc,那么需要我们自己通过泄露函数地址来获得libc的基地址,而往往LibcSearcher无法准确的得到libc版本,那么我们就需要利用DynELF,这是pwntools在早期版本就提供了一个解决方案——DynELF类;利用方式与ret2libc类似,都是泄露函数地址来计算得到libc基址,通俗地讲,DynELF就是通过程序漏洞泄露出任意地址内容,结合ELF文件的结构特征获取对应版本文件并计算对比出目标符号在内存中的地址 并且: write函数是最理想的,因为write函数的特点在于其输出完全由其参数size决定,只要目标地址可读,size填多少就输出
7k6 分钟

# 概述 沙盒机制也就是我们常说的沙箱,英文名sandbox,是计算机领域的虚拟技术,常见于安全方向。一般说来,我们会将不受信任的软件放在沙箱中运行,一旦该软件有恶意行为,则禁止该程序的进一步运行,不会对真实系统造成任何危害。 在ctf比赛中,pwn题中的沙盒一般都会限制execve的系统调用,这样一来one_gadget和system调用都不好使,只能采取open/read/write的组合方式来读取flag。当然有些题目可能还会将上面三个系统调用砍掉一个,进一步限制我们获取到flag. # 1.prctl函数调用 prctl是进程管理函数,沙箱规则通过prctl函数实现
3.4k3 分钟

# ret2csu # 原理 64位程序中,函数的前6个参数是通过寄存器传递的,但是大多数时候我们很难找到每个寄存器对应的gadges。这时候,我们可以利用x64下的__libc_csu_init中的gadgets。 这个函数是用来对libc进行初始化操作的,而一般的程序都会调用libc函数,所以这个函数一定会存在。 # 下面借用别人在IDA摘出来的__libc_csu_init函数的汇编指令 .text:00000000004011B0 ; void _libc_csu_init(void) .text:00000000004011B0 public __