반응형
HackHiJack
HHJ
HackHiJack
전체 방문자
오늘
어제
  • 분류 전체보기 (99)
    • chatGPT (2)
    • pwn (2)
    • 워게임 (32)
    • Reversing (0)
    • Cryptography (12)
    • Web (6)
    • CTFs (16)
    • TryHackMe (6)
    • Go (5)
    • Forensics (18)

블로그 메뉴

  • 홈

공지사항

  • Welcome To HHJ's Blog

인기 글

태그

  • forensic
  • rootme
  • analyis
  • 해킹 #TryHackMe #WriteUp #ignite
  • main.go
  • package
  • func
  • linkfile
  • main
  • hacking
  • startup
  • ㅣ
  • go
  • 암호 #AES #드림핵
  • pwnable.kr
  • webhacking.kr
  • Import
  • function
  • 포렌식
  • shellctf

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HackHiJack

HHJ

Dreamhack - darimchal_001(writeup)
Cryptography

Dreamhack - darimchal_001(writeup)

2023. 2. 22. 10:46
728x90
반응형

오늘은 드림핵의 워게임, darimchal_001 문제를 풀어볼 것이다.

 

일단 이 문제의 c코드의 main 을 확인해 보겠다.

int main (int argc, char *argv[]) {
  if (argc != 2) {
    __print_sw_title(argv[0]);
    return ERRO;
  }

  if ( __is_valid_pwd(argv[1]) ) {
    __create_tag(argv[0]);
    printf("\n +-+ 무, 무슨... 말도 안돼!! 어떻게 복호화 키를...?? +-+ \n");
  } else {
    printf("\n 너의 파일들은 이제 요단강을 건너다가 저승사자와 하이파이브를 하게되었다! 으하하하하!\n"); // ㅋㅋㅋㅋㅋㅋ
  }

  return OK;
}

위 main 함수에서는 하나의 인자를 받아서 그 인자를 __is_valid_pwd()에 보내서 TRUE 인지 FALSE 인지 확인한다.

 

그러면 __is_valid_pwd()를 확인 해보자.

int __is_valid_pwd (char *pwd) {
  if (! strncmp(JOKER, __obfuscation(pwd, KEY), sizeof(JOKER)) ) {
    return TRUE;
  }

  return FALSE;
}

위를 보면 JOKER와 __obfuscation(인자, KEY)를 비교해서 같으면 TRUE를 return 하는 것을 확인할 수 있다.

 

그러면 __obfuscation을 확인해보자.

char *__obfuscation (char *pwd, char *key) {
  int i;
  for (i = 0; i < strlen(pwd); i++) {
    if(key[i] == '\0') break;
    pwd[i] = pwd[i] ^ key[i];
  }

  return pwd;
}

받은 인자와 KEY(023661dd4) 값을 XOR 한 값을 return 한다.

 

정리를 하자면 JOKER는 KEY 값과 받은 인자를 XOR한 값이다.

JOKER = flag XOR KEY

그런데 XOR은 역연산이 가능하기 때문에 아래와 같이 나타낼 수 있다.

flag = JOKER XOR KEY
flag = 023661dd4 XOR \x40\x53\x06\x03\x43\x52\x54\x3b

이를 토대로 XOR 연산을 아래와 같이 하면 flag를 얻을 수 있다.

728x90
반응형

'Cryptography' 카테고리의 다른 글

Dreamhack - Robot Only(writeup)  (0) 2023.02.22
Dreamhack - ICM2022(writeup)  (0) 2023.02.22
Cryptography(암호학) - Hash(해시)  (0) 2021.12.26
Cryptography(암호학) - RSA(공개키 암호)  (0) 2021.12.23
Cryptography(암호학) - DES(Data Encryption Standard)  (0) 2021.12.18
    'Cryptography' 카테고리의 다른 글
    • Dreamhack - Robot Only(writeup)
    • Dreamhack - ICM2022(writeup)
    • Cryptography(암호학) - Hash(해시)
    • Cryptography(암호학) - RSA(공개키 암호)
    HackHiJack
    HackHiJack
    $ whoami HHJ

    티스토리툴바