darimchal_001

2023. 2. 14. 07:29·Wargame/Dreamhack
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define JOKER "\x40\x53\x06\x03\x43\x52\x54\x3b"
#define KEY   "023661dd4\0"
#define TRUE  1
#define FALSE 0
#define OK    0
#define ERRO -1

void __print_sw_title (char *sw_name);
int __is_valid_pwd (char *pwd);
char *__obfuscation (char *pwd, char *key);
void __create_tag (char *id);

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

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

  return FALSE;
}

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

void __print_sw_title (char *sw_name) {
  printf(" ----------- [%s] ----------- \n", sw_name);
  printf(" ::. 복호화 방법: %s <복호화키>\n\n", sw_name);
}

void __create_tag (char *id) {
  FILE *fd;
  char *tag_name = (char *)malloc(24 * sizeof(char));
  memset(tag_name, '\0', 24);
  snprintf(tag_name,24, "./%s.success", id);
  fd = fopen(tag_name, "w");
  if (fd != NULL) {
    fprintf(fd, "복호화가 완료되었습니다.\n");
    fclose(fd);
  } else {
    printf("[ }{4k3r m3ss493 ] Hey sussy baka~ 7h3r3 w4s 4n 3rr0r 0p3nin9 7h3 file..\n");
  }
}

 

2.2. 분석

사실 이 분이 만든 문제는 뭔가 좀.... 이상함.

 

결론은 그냥 joker와 key의 xor 문제이다.

 

3. exploit

joker = b'\x40\x53\x06\x03\x43\x52\x54\x3b'
key = b'023661dd4'
d = ''

for i in range(len(joker)):
    d += chr(key[i]^joker[i])

print(d)

 

┌──(kali㉿kali)-[~/Downloads]
└─$ cat solve.py 
joker = b'\x40\x53\x06\x03\x43\x52\x54\x3b'
key = b'023661dd4'
d = ''

for i in range(len(joker)):
    d += chr(key[i]^joker[i])

print(d)
                                                                                                                    
┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
pa55uc0_

┌──(kali㉿kali)-[~/Downloads]
└─$ ./1 pa55uc0_

 +-+ 무, 무슨... 말도 안돼!! 어떻게 복호화 키를...?? +-+

 

근데 답은 드림핵 flag 형식인 DH{} 없이, 그리고 마지막 _도 없이

pa55uc0 임.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Wargame > Dreamhack' 카테고리의 다른 글

rev-basic-9  (0) 2023.03.05
validator-revenge  (0) 2023.02.27
Robot Only  (0) 2023.02.14
SingleByteXor  (0) 2023.02.14
Basic_Crypto1  (0) 2023.02.14
'Wargame/Dreamhack' 카테고리의 다른 글
  • rev-basic-9
  • validator-revenge
  • Robot Only
  • SingleByteXor
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (494) N
      • To do list (6)
        • Doing (0)
        • Complete (6)
      • Diary (35)
      • Tips & theory (77)
      • Kernel Exploit (23) N
        • Theory (15)
        • Exercise (1) N
      • Wargame (313)
        • pwn.college (34)
        • Dreamhack (148)
        • pwnable.kr (15)
        • Lord of Sqlinjection (3)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (40)
        • Solved (38)
        • Unsolved (2)
      • Script (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    Format String Bug
    BOF
    phoenix
    lob
    tcache
    cryptohack
    root
    dreamhack
    pwntools
    ROOT ME
    _IO_FILE
    pwnable.kr
    x64
    hackerschool
    rop
    Buffer Overflow
    CANARY
    FSB
    x86
    32bit
    64bit
    libc
    vtable
    la ctf
    docker
    exploit education
    root-me
    RTL
    heap
    Me
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
darimchal_001
상단으로

티스토리툴바