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]);
}
뭐 코드 짜보시면 알겠지만 디코딩한 값으로 여러 문자열이 나올 수 있습니다.
그중에 하나를 골라서 넣어주면!
반응형