Download: supereasy
64bit ELF 파일이다. IDA로 분석하면,
입력받는 문자열의 길이가 20인지 확인하고, 각 바이트마다 FLAG[i]랑 XOR 연산한 결과가 115면 플래그를 딸 수 있다. FLAG는 global에 정의되어 있으므로, 간단한 코딩으로 플래그를 알아낼 수 있다.
#include <cstdio>
typedef unsigned __int8 byte;
int main() {
byte flag[20] = {0x35, 0x3F, 0x32, 0x34, 0x08, 0x23, 0x42, 0x09, 0x5E, 0x20, 0x43, 0x42, 0x05, 0x16, 0x5E, 0x1E, 0x40, 0x5D, 0x5D, 0x0E};
for (int i=0 ; i<20 ; i++) {
for (int j=32 ; j<128 ; j++) {
byte c = (byte)j;
if ((flag[i] ^ c) == 115) {
printf("%c", c);
break;
}
}
}
return 0;
}
'ICEWALL' 카테고리의 다른 글
[Reversing] easy / 150 (0) | 2019.07.20 |
---|---|
[Reversing] virtual / 80 (0) | 2019.07.20 |
[System] note / 450 (0) | 2019.07.20 |
[System] babyheap / 400 (0) | 2019.07.20 |
[System] stack_chk_fail / 300 (0) | 2019.07.19 |