ICEWALL

[Reversing] supereasy / 50

Syine Mineta 2019. 7. 20. 16:33

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;
}