[HackCTF] Reversing Me 풀이 (100p)
Wargame/HackCTF

[HackCTF] Reversing Me 풀이 (100p)

문제 종류 - Reversing
사용한 툴 - 
#include <stdio.h>
#include <string.h>

int main() {
	int i;
	char *serial = "H`cjCUFzhdy^stcbers^D1_x0t_jn1w^r2vdrre^3o9hndes1o9>}";
	char enter[54];
	printf("키를 입력하시게 : ");
	scanf("%s", enter);
	if (strlen(enter) == strlen(serial)) {
		for (i = 0; i < strlen(serial) && (enter[i] ^ (i % 2)) == serial[i]; i++);
		if (i - 1 == strlen(enter))
			printf("정답일세!\n");
	}
	else
		printf("그건 아닐세...\n");
		exit(0);
	
}

 

풀이

C 코드 하나가 주어진다.

먼저 코드를 정상적으로 동작시키기 위해서는 enter와 serial의 문자열 길이가 같아야한다.

그러면 enter(키)의 길이는 serial의 길이, 즉 53자이다.

 

if문은 i < 53 && (enter[i] ^ (0,1,0,1,0,1...)) == serial[i] 일 때까지 반복한다.

그럼 enter(키)값은 serial[i] ^ (0,1,0,1,0,1...)일 것이다.

풀이에 사용된 코드는 다음과 같다.

#include <stdio.h>
#include <string.h>

int main() {
	int i;
	char *serial = "H`cjCUFzhdy^stcbers^D1_x0t_jn1w^r2vdrre^3o9hndes1o9>}";
	char answer[54] = "";
	char enter[54];

	for(int i=0; i<53; i++)
		answer[i] = serial[i] ^ (i%2);
	printf("%s",answer);
}

'Wargame > HackCTF' 카테고리의 다른 글

[HackCTF] Strncmp 풀이 (150p)  (0) 2020.07.12
[HackCTF] Handray 풀이 (100p)  (0) 2020.07.12
[HackCTF] Welcome_REV 풀이 (50p)  (0) 2020.07.12
[HackCTF] Classic Cipher -4 풀이 (250p)  (0) 2020.07.12
[HackCTF] Classic Cipher -3 풀이 (200p)  (0) 2020.07.12