촉촉한초코칩

[Dreamhack] littlevsbig 본문

Study/MISC

[Dreamhack] littlevsbig

햄친구베이컨 2024. 9. 4. 01:09

 

코드 

// Name: chall.c
// Compile Option: gcc chall.c -o chall -fno-stack-protector

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>

#define FLAG_SIZE 0x45

void alarm_handler() {
    puts("TIME OUT");
    exit(-1);
}

void initialize() {
    setvbuf(stdin, NULL, _IONBF, 0);
    setvbuf(stdout, NULL, _IONBF, 0);

    signal(SIGALRM, alarm_handler);
    alarm(30);
}


int main(int argc, char *argv[]) {
    int fd;
    char *flag;

    initialize();

    // read flag
    flag = (char *)malloc(FLAG_SIZE);
    fd = open("./flag", O_RDONLY);
    read(fd, flag, FLAG_SIZE);
    close(fd);

    printf("Input: ");

    unsigned char arr[9];
    scanf("%8s", arr);
    printf("arr  | 0x%x  0x%x  0x%x  0x%x  0x%x  0x%x  0x%x  0x%x |\n", arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]);

    unsigned int * int_arr = (unsigned int *)arr;

    printf("arr  | 0x%x  0x%x |\n", int_arr[0], int_arr[1]);

    if(int_arr[0] == 0x64726d68 && int_arr[1] == 0x636b3a29){
        puts("Nice!");
        puts(flag);
    }
    else{
        puts("No...");
    }

    return 0;
}

flag가 나오는 조건은 int_arr[0]와 int_arr[1]이 저 값과 동일해야 한다. 

int_arr은 입력받을 arr배열을 가리키는 포인터 인 것 같다. 

 

실행 

ubuntu에서 chall.c 생성하고 gcc 명령어 입력해주었다.

  • input_arr[0] : arr[3] [2] [1] [0] → 0x64726d68
  • input_arr[1] : 입력한 값 (arr[7] [6] [5] [4]) 0x636b3a29

입력 : 0x686d72 64293a6b63

그러면 6자가 최대인데.. 

 

print문에서 0x%x가 무슨 뜻인지 모르겠어서 찾아봤다. → 16진수(헥사) 형식으로 정수를 출력하는 형식 지정자

arr에 8글자를 입력하고 각 글자를 16진수로 변환된 값이 0x64726d68와 0x636b3a29가 되어야 한다. 

그래서 위 16진수를 문자열로 변환했더니 drmhck:) 이런 문자열이 나왔다. 

문자열을 거꾸로 뒤집으면 될 것 같다. 

4개씩 나눠지니까 4문자씩 앞뒤를 바꿔주었다. 

뭐지.....

nc로 접속해야 하는 거였다... 

 

아무튼 성공 

'Study > MISC' 카테고리의 다른 글

[Dreamhack] Snowing!  (0) 2024.09.17
[Dreamhack] addition-quiz  (0) 2024.09.11
[Dreamhack] broken-png  (0) 2024.09.04
[Dreamhack] **Exercise: Docker  (0) 2024.08.20
[Dreamhack] dreamhack-tools-cyberchef  (0) 2024.08.12