Đề bài: http://reversing.kr/download.php?n=11
Dùng Hexrays decompile ta được hàm kiểm tra input:
bool __cdecl sub_8048451() { bool result; // eax@2 if ( byte_804A021 == 49 ) { byte_804A020 ^= 0x34u; byte_804A022 ^= 0x32u; byte_804A023 ^= 0x88u; if ( byte_804A024 == 88 ) { if ( byte_804A025 ) { result = 0; } else { if ( byte_804A022 == 124 ) { if ( byte_804A020 == 120 ) result = byte_804A023 == -35; else result = 0; } else { result = 0; } } } else { result = 0; } } else { result = 0; } return result; }
Ta tính lại giá trị đc xor bằng công thức a xor b xor b = a
Ta xem và so sánh các kí tự
byte_804A020 ^ 0x34 == 120 ==> lấy 0x34 xor 120 ra kí tự "L"
byte_804A021 == 49 ==> kí tự "1"
byte_804A022 ^ 0x32u == 124 ==> lấy 0x32 xor 124 ra kí tự "N"
byte_804A023 ^ 0x88u == -35 ==> lấy 0x88 xor -35 ra kí tự "U"
byte_804A024 == 88 ==> kí tự "X"
Vậy L1NUX là flag

0 nhận xét:
Đăng nhận xét