[NepCTF 2025] time 多线程栈 程序分析: 12345678910111213141516171819unsigned __int64 inputname(){ char *argv[5]; // [rsp+10h] [rbp-30h] BYREF unsigned __int64 v2; // [rsp+38h] [rbp-8h] v2 = __readfsqword(0x28u); puts("please input your name:"); __isoc99_scanf("%100s", byte_50A0)
条件竞争漏洞条件竞争:系统中,最小的运算调度单位是线程,而每个线程又依附于一个进程,条件竞争则是多进程或多线程对一个共享资源操作,因为操作顺序不受控的时候所产生的问题。 进程:在计算机操作系统中,进程是指一个正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。 进程的内存空间布局:当操作系统启动一个进程时,会为它分配独立的虚拟内存空间。这个空间通常被划分为以下几个主要部分: 代码段(Text/Code Segment): 存储程序执行的机器指令。这部分通常是只读的,以防止程序意外修改自己的指令。 数据段(Data Segment): 存储程序中已经初始化的全局变量和静态
ORW+栈迁移SROP[ NewStarCTF 2025 ]only_read 一个开启了沙箱的 SROP: 123456ssize_t vuln(){ _BYTE buf[16]; // [rsp+0h] [rbp-10h] BYREF return read(0, buf, 0x100u);} 123456789101112131415161718192021222324252627282930__int64 sandbox(){ __int64 v1; // [rsp+8h] [rbp-8h] v1 = seccomp_init(214741811
栈迁移SROP[SWPUCTF 2025 秋季新生赛]gift 1234567891011int __fastcall main(int argc, const char **argv, const char **envp){ __int64 v3; // rcx __int64 v4; // r8 __int64 v5; // r9 _UNKNOWN *buf_; // [rsp+28h] [rbp+8h] BYREF init(argc, argv, envp, v3, v4, v5, 0, 0, 0, 0); puts("Welcome to the wo
SROP 链利用1)BUUCTF-ciscn_2019_es_7(BABY_SROP) 发现这里 buf 是写在栈上的,我们需要自己去寻找栈上的地址 ubuntu18,先换一下 2.27 的 libc, 发现有很明显的系统调用以及栈溢出,觉得是 SROP 我们知道 buf 的值是存入 rsi 的,我们可以通过 rsi 的变化去计算输入的东西压入栈后的偏移: 看一下初始的 RSI 值: c 运行,之后输入 aaaa 去看一下 RSI,计算偏移: 0xe08 - 0xcf0 = 0x118 先明确思路,我们需要构造 execve(‘/bin/sh\x00,
SROP 利用技巧参考资料:https://xz.aliyun.com/news/12236 SROP 概要:_**SROP (Sigreturn Oriented Programming) **_SROP 和 ROP 类似,通过一个简单的栈溢出,覆盖返回地址并执行 gadgets 控制执行流。不同的是 SROP 使用能够调用 sigreturn 的 gadget 返回覆盖地址,并将一个伪造的 sigcontext 结构体放到栈中。sigreturn是一个系统调用,在类 unix 系统发生 signal 的时候会被间接地调用,其实就是利用了 linux 中的系统调用号,利用linux下的15号
libc_start_main在 pwn 题目当中,我们经常会选择寻找 libc_start_main 函数来泄露 libc 基地址。 我们想要泄露的是 __libc_start_main 相关的地址,这个地址其实就是 main 函数执行完后的返回地址。 返回地址永远存放在 ebp 的正下方,即高地址处,也就是 ebp + 4。下面来简单介绍一下这个函数的原理和调用方法。 libc_start_main在 C/C++ 程序的生命周期中,__libc_start_main 是一个极其核心的幕后英雄。很多人以为程序的执行是从 main() 函数开始的,但实际上,在 main() 被调用
SSP Leak & Fork96)wdb2018_guess(Fork&SSP Leak&environ) 12345678910111213141516171819202122232425262728293031323334353637383940414243__int64 __fastcall main(__int64 a1, char **a2, char **a3){ __WAIT_STATUS stat_loc; // [rsp+14h] [rbp-8Ch] BYREF __int64 n3_1; // [rsp+20h] [rbp-8