什么是Fork在计算机编程(尤其是 Linux/Unix 系统)中,fork() 是一个极其特殊且核心的系统调用。它的字面意思是“分叉”,功能是让一个正在运行的程序(父进程)在原地克隆出一个完全一样的副本(子进程)。 通俗点说,fork() 就像是细胞分裂,或者孙悟空拔下一根毫毛变出了一个一模一样的自己。 1. 核心特点:一次调用,两次返回这是 fork() 最神奇的地方。普通的函数调用一次只返回一个值,但 fork() 调用后,代码会从同一个点继续向下执行,但在父进程和子进程中返回的值不同: 在父进程中:返回子进程的 PID(进程 ID,一个大于 0 的整数)。这让父进程知道自己
一些常用函数的调用总结Read 函数read 函数:ssize_t read(int fd, void *buf, size_t count)。 read(0, …):从“标准输入”读取 (STDIN) 0 是 Standard Input (标准输入) 的宏定义(在 C 语言里叫 STDIN_FILENO)。 调用 read(0, buffer, size) 时,程序会暂停运行,等待用户在键盘上敲击字符并按下回车键。它和 C 语言里的 scanf 或者 getchar 底层是同一个数据来源。 read(fd, …):从“自定义文件/设备”读取 这里的 fd 是一个变量。当你使用
两种方法计算main_arena和environ之间的偏移 更新: 2026-04-21 00:20:38原文: https://www.yuque.com/idcm/wnemg9/hwze1rfx22pssoha
VMpwn-虚拟机逃逸参考资料:https://xz.aliyun.com/news/15722 https://zikh26.github.io/posts/ccd7886.html#ciscn-2019-qual-virtual 在学习 VMpwn 之前,建议学一学虚拟机逆向,这两个关联是很大的。VMpwn 一般代指在程序中实现运算指令来模拟程序的运行(汇编类)或者在程序中自定义运算指令的程序(编译类)。 [OGeek2019 Final]OVM 首先看一下题目主体吧: 12345678910111213141516171819202122232425262728293031323334
UnSortedbin_leak_libc_baseUnsorted Bin 指针到 main_arena 自身的偏移当你把一个 Chunk 放进空无一物的 Unsorted Bin 时,它的 fd 和 bk 指针会指向 Unsorted Bin 的链表头。这个链表头在 main_arena 结构体内部,具体偏移如下(以64位系统为例): Ubuntu 版本 glibc 版本 main_arena 偏移 Unsorted Bin 内部偏移 泄露地址到 libc_base 的总偏移 Ubuntu 16.04 2.23 0x3c4b20 + 0x58 (88) 0x3c4b78 U
Tcachebin Attack 基本介绍参考资料:PWN入门(3-15-1)-Tcache Attack综述(libc-2.27.so) Linux 虚拟机环境 glibc 2.27 版本 Tcachebin 综述tcache(Thread local caching)线程本地缓存(简称:TLC)。线程本地缓存(tcache)是 glibc 2.26 的新特性,为每个线程缓存小尺寸空闲堆块,也是现代堆漏洞利用的核心。详细来说就是它为每个线程创建一个缓存 cache,增加了堆的分配效率,同时也引入了更多的不安全性,使之前的很多代码都不在其作用,可以很好的绕过。 tcachebin 和 unso
Tcache Poisoning[LitCTF 2024] heap-2.31 Tcache Poisoning 123┌──(pwn_env)─(root㉿kali)-[/home/kali/Desktop]└─# patchelf --set-interpreter ./glibc-all-in-one/libs/2.31-0ubuntu9_amd64/ld-2.31.so ./heap2.31 patchelf --set-rpath /home/kali/Desktop/glibc-all-in-one/libs/2.31-0ubuntu9_amd64 ./heap2.31 封装
SSP Leak < libc2.27什么是 SSP 漏洞?_**Stack Smashing Protector (SSP) **_是一个著名的缓冲区溢出漏洞缓解措施。当一个函数检测栈上的 Canary 被破坏的时候,就会转到 __stack_chk_fial()函数终止程序运行并抛出错误信息。改错误信息包含了 argv[0] 指向的字符串,如果我们能够控制 argv[0],那么将可能造成信息泄露,这一技术称之为 SSP Leak。 先举个简单的例子: 默认情况下 argv[0] 是指向程序路径及名称的指针,当检查到栈溢出时,在标准错误中打印出了这个字符串: 123456789#inc