<aside>
사용도구 : IDA Free 9.0
</aside>
main 함수

Strings를 살펴보면 Hello, admin이라는 평문이 보이고 play_admin_mode() 함수에서 실행되는 것을 알 수 있다.

main 함수를 살펴보면 play_admin_modes()는 is_admin_trigger(Str)이 True를 반환해야 실행된다.
is_admin_trigger() 함수
True를 반환하려면 strcmp(v31, Str2)이 0이어야 하므로 v31, Str2 값이 같아야한다.


Str2은 is_admin_trigger 배열을 난독화 한 값이다. 바이너리에서 해당 배열의 바이트 값을 살펴 보면 2667riit 임을 확인할 수 있다.
is_admin_trigger_enc = '2667riit'
enc = [ord(c) for c in is_admin_trigger_enc]
dec = []
def decode(enc):
return ((~enc & 0xEB) | (enc & 0x14)) ^ 0xED
for i, byte in enumerate(enc):
decoded = decode(byte)
dec.append(chr(decoded))
print(dec) # ['4', '0', '0', '1', 't', 'o', 'o', 'r']
v31 은 사용자가 입력을 저장하는 버퍼이므로 root1004를 입력하면 admin_mode로 진입할 수 있다.

