Again, we are performing more (albeit straightforward) checks on the input.
Using claripy, we specify our flag to be a bitvector with 37 characters. Using angr, we specify the base address of the binary to be 0, and we want to find the address 0x1286 which is the address of puts("Congratulations !"), and we avoid the addresses 0x1848 and 0x1837 which are the addresses of puts("Bruh : ( "). We then get the simulation manager to explore the program and find the flag.
import angr
import sys
import claripy
input_file_path='./angry_patched_skill_issues'
flag_length=37
known_string='L3AK{'
FIND_ADDR=0x1826
AVOID_ADDR=[0x1848, 0x1837]
proj=angr.Project(input_file_path,main_opts={'base_addr':0x00})
known_chars=[claripy.BVV((known_string[i])) for i in range(len(known_string))]
flag_chars=[claripy.BVS(f"flag_{i}",8) for i in range(flag_length-len(known_string))]
flag=claripy.Concat(*known_chars+flag_chars + [claripy.BVV(b'\n')])
state = proj.factory.entry_state(args=[input_file_path], stdin=flag)
# state=proj.factory.full_init_state(args=[input_file_path,flag])
# state = proj.factory.full_init_state(stdin=flag)
sim_manager=proj.factory.simulation_manager(state)
sim_manager.explore(find=FIND_ADDR,avoid=AVOID_ADDR)
if(len(sim_manager.found)>0):
print(sim_manager.found[0].solver.eval(flag,cast_to=bytes))
# L3AK{angr_4_l1f3_d0nt_do_it_m4nU4lly}