[Write-up Revenge] VolgaCTF 2026 Qualifier: login
设计的很不错,毛子的签到题一上来就是没见过的东西,涉及到修改 cs 寄存器,将 32 位指令模式改为 64 位 1 程序分析32 位,开了 NX 12345678(pwn)secreu@Vanilla:~/code/CTF/VolgaVTF2026/login$ checksec --file=vuln[*] '/home/secreu/code/CTF/VolgaVTF2026/login/vuln' Arch: i386-32-little RELRO: No RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) Stripped: No 用 int 0x80 实现的读写原语 1234567891011121314151617181920212223242526.text:00400054 read_stdin proc near ; C...
[Write-up Revenge] SUCTF 2026: evbuffer
这道题其实不难,如果完整调试过高版本 _IO_FILE 利用链,这题自然不在话下,原理是相通的 比赛时已经能够劫持执行流了,但是就是不知道怎么在仅有 libevent 的情况下拿到 flag,赛后一看别人的 wp,结果 libc 相对 libevent 竟然是固定偏移,有 libc 的话就可以直接控 rsp 做 ROP 了。同门惊呼:“为何我本地它们的偏移不固定?” 有 libc 后也是很快本地跑通了,本文基于用 SU Team 提供的 docker 复现的结果撰写 比赛 repo: https://github.com/team-su/SUCTF-2026/tree/main 1 程序分析开了沙箱禁用 exec,并且保护全开 程序监听 8888/UDP 和 8889/TCP 端口,并分别设有处理函数 其中 TCP 连接的处理用到了 libevent 库,也是本题的主角 123456789101112131415161718192021222324252627int __fastcall main(int argc, const char **argv, ...
[Write-up] DiceCTF 2026 Quals: bytecrusher & message-store
较为简单的 2 题,漏洞点都很明显,其中 bytecrusher 是签到题,message-store 是 Rust,需要费心思找 gadgets 1 bytecrusher给了源码,基本功能就是做 16 轮数据压缩,每一轮都是读最多 32 字节到 input_buf,然后根据输入的 rate 作为步长将 input_buf 中的数据拷贝到 crushed,然后输出 crushed,接着再读一段输入到 buf,结束 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596#include <stdio.h>#include <stdlib.h>#include <string.h>void admin_portal() { ...
[pwnable.tw] CVE-2018-10387
1 题目信息 题目描述:Singled-threaded TFTP Server Open Source Freeware Windows/Unix for PXEBOOT, firmware load, support tsize, blksize, timeout, server port ranges, block number rollover for large files, and remote code execution.CVE 描述:Heap-based overflow vulnerability in TFTP Server SP 1.66 and earlier allows remote attackers to perform a denial of service or possibly execute arbitrary code via a long TFTP error packet, a different vulnerability than CVE-2008-2161. 题目提供了 opentftpd 二进制文件和 libc,...
[pwnable.tw] BabyStack
1 程序分析64 位保护全开,libc 版本 2.23 12345678910111213(pwn)secreu@Vanilla:~/code/pwnable/babystack$ checksec --file=babystack[*] '/home/secreu/code/pwnable/babystack/babystack' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled RUNPATH: b'./' FORTIFY: Enabled(pwn)secreu@Vanilla:~/code/pwnable/babystack$ strings libc_64.so.6 | grep "GNU"GNU C Library (Ubuntu GLIBC 2.23-0ubunt...
[Write-up Revenge] LilacCTF 2026: Gate-Way
第一次见这种架构的,大佬说不常见架构的题不会太难,主要是指令集有学习成本,记录一下 1 程序分析高通 DSP,32 位没开 PIE 123456789(pwn)secreu@Vanilla:~/code/LilacCTF2026/Gate-Way$ file pwnpwn: ELF 32-bit LSB executable, QUALCOMM DSP6, version 1 (SYSV), statically linked, stripped(pwn)secreu@Vanilla:~/code/LilacCTF2026/Gate-Way$ checksec --file=pwn[*] '/home/secreu/code/LilacCTF2026/Gate-Way/pwn' Arch: em_qdsp6-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (...
[pwnable.tw] Spirited Away
1 程序分析32 位,没开 PIE 且没有 Canary,libc 版本为 2.23 12345678910111213(pwn)secreu@Vanilla:~/code/pwnable/spirited_away$ checksec --file=spirited_away[*] '/home/secreu/code/pwnable/spirited_away/spirited_away' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8046000) RUNPATH: b'./' Stripped: No(pwn)secreu@Vanilla:~/code/pwnable/spirited_away$ strings libc_32.so.6 | grep "GNU&qu...
[Write-up Revenge] 第十九届 CISCN & CCB 初赛: easy_rw
哎哎,赛后半小时才打通本地,第一次接触 off-by-null 题目给了 2 个 binary,libc 版本 2.31,咱们分开来看 1 Proxy1.1 程序分析用 IDA 打开,看 strings view 可以发现套了一层 UPX 壳,直接脱开 主函数监听本地 8888 端口,fork 子进程处理连接 分析 sub_2CAA,接收一个 TLV,格式如下 4 bytes 4 bytes left bytes command payload’s length payload 执行 command 前读 config.txt 得到 n 和 d 保存在 .bss 节上不同 command 功能如下 command function 0xFFFF2525 认证:按小端序接收一个数 x,快速模幂计算 $x^d\enspace\text{mod}\enspace n$,与字符串 ‘hack’ 的哈希进行比较,相同则返回 cookie 0x7F687985 转发:先验证 cookie,然后将 paylaod 剩下部分转发给本地 7777 端口 0x8...
[Write-up Revenge] HKCERT CTF 2025 (Qualifying Round): piano -- Exploiting UAF in QuickJS
挺有意思的一道题,比赛时没有做出来,赛后多花了几天钻研了一下,所以标题取名 Revenge 1 Initial Analysis1.1 The challenge 题目给了需要的库,只需要 patchelf 一下就可以,给的 elf 是 QuickJS version 2025-09-13,这是一个开源的 JavaScript 解释器 12345678910111213141516171819(pwn)secreu@Vanilla:~/code/HKCERT2025/piano$ ./qjs -hQuickJS version 2025-09-13usage: qjs [options] [file [args]]-h --help list options-e --eval EXPR evaluate EXPR-i --interactive go to interactive mode-m --module load as ES6 module (default=autodetect) --script load ...
[pwnable.tw] Starbound
1 程序分析32 位,没开 PIE 123456789(pwn)secreu@Vanilla:~/code/pwnable/starbound$ checksec --file=starbound[*] '/home/secreu/code/pwnable/starbound/starbound' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) FORTIFY: Enabled Stripped: No 一个小游戏,看起来很复杂 init 函数最后的 cmd_go_back 将 show_main_menu 函数的地址存放在了 .bss:0805817C 上,所以该地址其实是一个 hook,将其命名为 show_options_hook,在 main 函数中会循环调用之,用来展示不同的菜单选...