File
ubuntu@29c7cfc91700:~/CTF/reversing.kr$ file Easy_ELF Easy_ELF: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, BuildID[sha1]=8edb9e400a3882319cd4582f89dd2373b7e1745c, stripped
32비트 리눅스용 실행파일 하나.
Decompile
main
int __cdecl main() { write(1, "Reversing.Kr Easy ELF\n\n", 0x17u); sub_8048434(); //__isoc99_scanf(&unk_8048650, &byte_804A020); if ( sub_8048451() ) sub_80484F7(); //write(1, "Correct!\n", 9u); else write(1, "Wrong\n", 6u); return 0; }
sub_8048451() 함수에서 true를 반환시켜야 된다.
sub_8048451
_BOOL4 sub_8048451() { if ( byte_804A021 != '1' ) return 0; byte_804A020 ^= 0x34u; byte_804A022 ^= 0x32u; byte_804A023 ^= 0x88u; if ( byte_804A024 != 'X' ) return 0; if ( byte_804A025 ) return 0; if ( byte_804A022 != 124 ) return 0; if ( byte_804A020 == 120 ) return byte_804A023 == 0xDDu; return 0; }
일부 문자는 XOR 연산하고 각각의 문자를 확인한다.
Solution
자세한 설명은 생략한다..
ubuntu@29c7cfc91700:~/CTF/reversing.kr$ ./Easy_ELF Reversing.Kr Easy ELF L1NUX Correct!