[DreamHack] Welcome Hackers

2024. 12. 17. 09:43보안/포너블

728x90
#include <stdio.h>
//입출력 관련 함수 제공 헤더파일
#include <stdlib.h>
//동적 메모리 할당 및 메모리 관리 관련 함수 제공 헤더파일
#include <string.h>
//문자열 처리 및 비교를 위한 함수 제공 헤더파일

int main() {
  int sz = 0x30; //입력 버퍼 크기를 0x30(48바이트)로 설정
  char *buf = (char *)malloc(sizeof(char) * sz); 
  //동적으로 48바이트 메모리를 할당하고 포인터 buf에 저장

  puts("Hello World!"); //puts : 문자열 출력
  printf("Education + Hack = ?\\n"); //문자열 출력 후 입력 요구
  fgets(buf, sz, stdin); //stdin(입력 포인터)에서 최대 sz(48바이트)를 입력받아 buf에 저장

  if (!strncmp(buf, "DreamHack", 9)) 
  //입력받은 buf와 "DreamHack"이라는 문자열을 9만큼만 비교, 같으면 0을 출
    printf("Welcome Hackers :)\\n"); //입력받은 buf가 "DreamHack"으로 시작하면 출력
  else
    printf("No No :/\\n"); //입력받은 buf가 "DreamHack"으로 시작하지 않는다면 출력

  return 0;
}
  • Welcome Hackers :)가 출력되는 입력값은?
  • DreamHack으로 시작하는 문자열
#!/usr/bin/python3

quiz = [116, 66, 85, 81, 93, 120, 81, 83, 91]

for i in range(len(quiz)):
    quiz[i] ^= 0x30 //quiz 리스트에 있는 값을 0x30(48)과 하나씩xor연산

quiz = ''.join([chr(_) for _ in quiz]) //chr(아스키 코드를 문자로 변환)하고 join(합침)
answer = input()

if answer == quiz: //입력값이 quiz값과 같은 지 검사
    print("Welcome Hackers :)")
else:
    print("No No :/")

116 ^ 48 = 68 → D

66 ^ 48 = 114 → r

85 ^ 48 = 101 → e

81 ^ 48 = 97 → a

93 ^ 48 = 109 → m

120 ^ 48 = 72 → H

81 ^ 48 = 97 → a

83 ^ 48 = 99 → c

91 ^ 48 = 107 → k

  • Welcome Hackers :)가 출력되는 입력값은?
  • DreamHack
728x90

'보안 > 포너블' 카테고리의 다른 글

[DreamHack] welcome  (0) 2024.12.27