调试环境搭建debug musldebug_musl 可以源码调试。运行 setup.sh 将源码及相关动态链接库解压到根目录下 musl 文件夹下,用的时候只需要将对应版本的 libc.so 文件复制到目录下,然后利用 patchelf 运行如下命令修改可执行文件所依赖的 ld 为 libc.so 即可进行源码调试。
1patchelf --set-interpreter ./libc....
背景知识浏览器框架它是⼀个多进程+IPC的程序, 不同的进程管理不同的内容,
browser process: 主进程
rander process: 负责控制渲染内容
GPU process: 负责渲染内容
utility process: 标签页进程
plugin process: 插件进程
每个插件, 每个标签页都是单独的进程, 有属于自己的PID
JS 引擎各浏览器对应的 js ...
现代 Linux 常见的分配器是 **glibc 的 malloc**,它源自 ptmalloc2(基于 dlmalloc 改造),并在 glibc 中长期演化(加入多 arena、tcache 等)。非 glibc 体系(如 musl、Android bionic)并不使用这套实现。
内存分配基本思想
堆管理器负责向操作系统申请内存,然后将其返回给用户程序,但是频繁的系统调用会造成大量的开...
debug glibc:对于一些复杂的堆利用,可以先用支持源码调试的 libc 完成利用,然后改偏移打题目提供的 libc 。
Unlink假设正常情况下,每申请一个 chunk 会保存一个指向该 chunk 内存块的指针。在 chunk1 伪造 fake chunk ,需要注意:
为了绕过
12if (__builtin_expect(FD->bk != P || BK->f...
基础知识常见格式化字符串函数标准/POSIX printf窄字符(<stdio.h>)1234567891011121314int printf(const char *format, ...);int vprintf(const char *format, va_list ap);int fprintf(FILE *stream, const char *format...
逻辑漏洞栈溢出往往可以覆盖栈上的其他局部变量造成逻辑漏洞。
ret2text栈溢出覆盖返回地址为后门函数从而获取shell。
ret2syscall系统调用约定
含义
amd64 (syscall)
i386 (int 0x80)
号
RAX
EAX
arg1
RDI
EBX
arg2
RSI
ECX
arg3
RDX
EDX
arg4
R10 ⭐
ESI
ar...
FILE 结构IO FILE 定义的各种主要结构关系如下图所示。
各种文件结构采用单链表的形式连接起来,通过 _IO_list_all 访问。
vatble 为函数指针结构体,存放着各种 IO 相关的函数的指针。
初始情况下 _IO_FILE 结构有 _IO_2_1_stderr_ ,_IO_2_1_stdout_,_IO_2_1_stdin_ 三个,通过 _IO_list_all 将...
环境搭建虚拟机安装
镜像下载网站
为了避免环境问题建议 22.04 ,20.04,18.04,16.04 等常见版本 ubuntu 虚拟机环境各准备一份。注意定期更新快照以防意外。
虚拟机建议硬盘 256 G 以上,内存也尽量大一些。硬盘大小只是上界,256 G 不是真就占了 256 G,而后期如果硬盘空间不足会很麻烦。
更换 ubuntu 镜像源 ,建议先在 系统设置 → Software...
https://www.vergiliusproject.com/
系统通知型回调(Notify Callbacks)系统通知型回调是 Windows 内核提供的一类机制,允许内核模式驱动程序注册回调函数,以便在系统关键事件(如进程/线程创建、模块加载、句柄操作、注册表修改等)发生时收到通知。
常见的系统通知型回调有下面几种类型:
事件类型
注册函数
回调函数类型
进程...