본문으로 바로가기

[Reversing] supereasy / 50

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

'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