Rev/Write-up

HackCTF-keygen

zooonique 2019. 10. 28. 19:23
반응형

이번 문제는 딱히 기술이 필요하지는 않고, 코딩만 조금 하면 되는 문제입니다.

10분정도 시간이 남아서 쓰는.....

딱봐도 fgets로 문자열입력받고 check_key함수에서 값이 맞으면 flag를 출력해주겠군요.

check_key함수 내용을 보니, 내가 입력한 문자열은 encoding함수로 변환하고 그 결과를

저 요상한 문자열과 비교합니다.

 

encoding함수에 정답이 있겠네요~

아래와 같은 인코딩방식을보고 "OO]oUU2U<sU2UsUsK"를 디코딩하면 됩니다.

#include <stdio.h>
#include <string.h>
int main() {

	int b[17] = { 79,79,93,111,85,85,50,85,60,115,85,50,85,115,85,115,75 };
	char *a = "OO]oUU2U<sU2UsUsK";
	char c[17];
	int k, tmp2;

		for (int i = 0; i < strlen(a); i++) {

			for (k = 33; k < 127; k++) {
				if(i==0)
					tmp2 = ((k + 12) * 72 + 17) % 70 + 48;

				else
					tmp2 = ((k + 12) * b[i-1] + 17) % 70 + 48;
			
		 		if (tmp2 ==b[i]) {
					c[i] = k;
					printf("k[%d] = %c   ",i,k);
					
				}
				
		}
			printf("\n");
	}
	for(int i=0;i<16;i++)
		printf("%c", c[i]);

}

뭐 코드 짜보시면 알겠지만 디코딩한 값으로 여러 문자열이 나올 수 있습니다.

그중에 하나를 골라서 넣어주면!

반응형