CTF/REVERSING

HackCTF Reversing Me

Writeup


information

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

문제는 위와 같은 코드를 준다.

(enter[i] ^ (i % 2)) == serial[i] 이 부분을 문자열 길이만큼 돌고 정답이라고 출력하는 걸 보면 알 수 있듯이 enter, 즉 입력해주는 값이 flag가 되는 문제이다.


Code

python을 사용하여 풀었고 홀수번 마다 1과 xor 연산을 한 후 출력을 해주면 된다.

text = "H`cjCUFzhdy^stcbers^D1_x0t_jn1w^r2vdrre^3o9hndes1o9>}"
for i in range(len(text)):
    if ( i % 2 == 0):
        print (text[i]),
    else:
        print (chr(ord(text[i])^1)),