728x90
👾 문제 설명
어느날, 살인사건이 일어났다.
살인 사건의 유일한 증거물은 쓰여있는 쪽지에는, 다음과 같이 적혀있었다.
54586b6458754f7b215c7c75424f21634f744275517d6d
크립이에게 주어진 단서는, 쪽지의 내용과 이것이 어떤 단일바이트와 XOR해서 만들어진 암호라는 단서 뿐.
과연 크립이는 범인을 찾을 수 있을 것인가…!
flag 타입은 DH{message}입니다
📎 https://dreamhack.io/wargame/challenges/559
문제 파일을 다운로드 받는다.
이런 다잉 메시지가 담겨있다. 주어진 다잉 메시지를 XOR로 디코딩하여 Flag 값을 얻어야 하는 문제다.
54586b6458754f7b215c7c75424f21634f744275517d6d
위 문자는 16진수로 이루어진 코드임을 확인할 수 있다.
주어진 16진수 코드를 디코딩하기 위해서는 XOR 연산의 특성을 활용할 수 있습니다. 간단히 말하면, 암호화된 메시지와 동일한 단일 바이트 키로 XOR 연산을 하면 원본 메시지가 나옵니다. 따라서 이 경우 어떤 단일 바이트 (10진수로 0부터 255까지의 값)가 암호화 키로 사용되었는지 알아내어야 합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char hex[25] = {0x54, 0x58, 0x6b, 0x64, 0x58, 0x75, 0x4f, 0x7b, 0x21, 0x5c, 0x7c, 0x75, 0x42, 0x4f, 0x21, 0x63, 0x4f, 0x74, 0x42, 0x75, 0x51, 0x7d, 0x6d };
for (int i = 1; i < 255; i++) {
for (int j = 0; j < 23; j++)
printf("%c", hex[j] ^ i);
}
}
C언어 반복문을 이용하여 코드 구성을 하여 플래그를 얻을 수 있습니다.
플래그 값 발견!
728x90
'공부 > 암호학 (Crypto)' 카테고리의 다른 글
[드림핵 | 암호학] Basic_Crypto1 (0) | 2023.11.09 |
---|