[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 |
---|