Tags: elf rev angr 

Rating:

Angr solution for the task:
```
import angr
import claripy

def main():
SERIAL_SIZE = 48
flag = claripy.BVS('flag', SERIAL_SIZE * 8, explicit_name=True)
BUFFER = 0x100000
FUNCTION_ADDRESS = 0x40215D

find = 0x4021C4
avoids = [0x4021BE,0x402152,0x4020EB,0x40206B,0x401FE4,0x401F78,0x401EE9,0x401E5D,0x401D8D,0x401CE6,0x401C81,0x401BB5,0x401B09,0x401A39,0x40198D,0x4018C6,0x40181E,0x40177F,0x4016D5,0x40166D,0x4015DF, 0x401533,0x4014C7,0x401443,0x4013BB,0x401337,0x401287,0x4011FE]

project = angr.Project ('babymix')

state = project.factory.blank_state(addr = FUNCTION_ADDRESS, add_options={angr.options.LAZY_SOLVES, angr.options.ZERO_FILL_UNCONSTRAINED_MEMORY})

for i in range(SERIAL_SIZE):
state.solver.add(flag.get_byte(i) >= 0x20)
state.solver.add(flag.get_byte(i) <= 0x7f)

state.memory.store(BUFFER, flag, endness='Iend_BE')
state.regs.rdi = BUFFER

sm = project.factory.simulation_manager(state)
sm.explore(find = find, avoid = avoids)

found = sm.found[0]
return found.solver.eval(flag, cast_to=bytes)

if __name__ == "__main__":
print(main())
```