[๐Ÿฅ‰ Bronze 3] 38๊ฒน์œผ๋กœ ๊ฐ์‹ผ Base64 ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack What is This??? ํ’€์ด

2026-07-14ยท1๋ถ„ ์ฝ๊ธฐยท

[๐Ÿฅ‰ Bronze 3] 38๊ฒน์œผ๋กœ ๊ฐ์‹ผ Base64 ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack What is This??? ํ’€์ด

ํ•˜๋‚˜์˜ ๊ธด ๋ฌธ์ž์—ด๋งŒ ์ฃผ๊ณ  ๋ฌด์—‡์ด๋ƒ๊ณ  ๋ฌป๋Š” crypto ๋ฌธ์ œ. Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ Base64๋กœ, ๋˜ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ Base64๋กœ... 38๋ฒˆ ๊ฒน์ณ ๊ฐ์‹ผ ๊ฒƒ์ด๋ผ, ๋””์ฝ”๋“œ ๊ฒฐ๊ณผ๊ฐ€ ๋” ์ด์ƒ Base64๊ฐ€ ์•„๋‹ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋ฒ—๊ธฐ๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์›๋ณธ ํŒŒ์ผ์€ 100๋งŒ ๋ฐ”์ดํŠธ๊ฐ€ ๋„˜๋Š”๋ฐ, ๊ฒน๋งˆ๋‹ค 25%์”ฉ ์ค„์–ด๋“ค์–ด ์ตœ์ข… flag๋Š” 15๋ฐ”์ดํŠธ๋กœ ๋๋‚œ๋‹ค.

๋ฌธ์ œ: DreamHack โ€” What is This??? ๋ถ„๋ฅ˜: Crypto ๋‚œ์ด๋„: ๐Ÿฅ‰ Bronze 3 FLAG: DH{hellobase64}

ํŒŒ์ผ ํ•˜๋‚˜์— Vm0wd2QyUXlVWGxW...๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ธด ๋ฌธ์ž์—ด๋งŒ ๋“ค์–ด ์žˆ๋‹ค. ๋ฌธ์ œ ์„ค๋ช…๋„ "์ด๊ฒŒ ๋ญ๋…ธ!!"๊ฐ€ ์ „๋ถ€๋‹ค. ์ œ๋ชฉ์ฒ˜๋Ÿผ "์ด๊ฒŒ ๋ญ๋ƒ"๋ฅผ ๋ฌป๋Š” ๋ฌธ์ œ์ธ๋ฐ, ์ •์ฒด๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฒน์ณ ์ธ์ฝ”๋”ฉํ•œ Base64๋‹ค โ€” ๊ทธ๊ฒƒ๋„ ํ•œ๋‘ ๋ฒˆ์ด ์•„๋‹ˆ๋ผ 38๋ฒˆ.

What is This??? ๋ฌธ์ œ ํŽ˜์ด์ง€ โ€” ์„ค๋ช…์€ "์ด๊ฒŒ ๋ญ๋…ธ!!" ํ•œ ์ค„๋ฟ
What is This??? ๋ฌธ์ œ ํŽ˜์ด์ง€ โ€” ์„ค๋ช…์€ "์ด๊ฒŒ ๋ญ๋…ธ!!" ํ•œ ์ค„๋ฟ


๋ฌธ์ œ ๊ฐœ์š”

ํ•ญ๋ชฉ๋‚ด์šฉ
๋ฌธ์ œ๋ช…What is This???
๋‚œ์ด๋„๐Ÿฅ‰ Bronze 3
๋ถ„๋ฅ˜Crypto
์ œ๊ณต ํŒŒ์ผprob.txt (1,067,980๋ฐ”์ดํŠธ, ์ค„๋ฐ”๊ฟˆ ์—†๋Š” ํ•œ ์ค„)
ํ•ต์‹ฌ ๊ธฐ๋ฒ•Base64 ์ค‘์ฒฉ ์ธ์ฝ”๋”ฉ ๋ฐ˜๋ณต ๋””์ฝ”๋“œ

prob.txt๋งŒ ์žˆ์œผ๋ฉด ์˜คํ”„๋ผ์ธ์—์„œ ๋ฐ”๋กœ ํ’€๋ฆฐ๋‹ค.



๐Ÿงฉ ๋ฐฐ๊ฒฝ โ€” Base64 ๋Š” ์™œ ๊ฒน์ณ๋„ ํ‹ฐ๊ฐ€ ๋‚˜๋‚˜

Base64๋Š” ์ž„์˜์˜ ๋ฐ”์ดํŠธ๋ฅผ 64๊ฐœ ์ธ์‡„ ๊ฐ€๋Šฅ ๋ฌธ์ž(A-Z a-z 0-9 + /)๋กœ ์˜ฎ๊ธฐ๋Š” ์ธ์ฝ”๋”ฉ์ด๋‹ค. 3๋ฐ”์ดํŠธ(24๋น„ํŠธ)๋ฅผ 4๊ธ€์ž(6๋น„ํŠธ์”ฉ)๋กœ ๋ฐ”๊พธ๊ณ , ๋ถ€์กฑํ•˜๋ฉด =๋กœ ํŒจ๋”ฉํ•œ๋‹ค. ์•”ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ์ € ํ‘œํ˜„ ๋ฐฉ์‹์ด๋ผ ํ‚ค ์—†์ด ๋ˆ„๊ตฌ๋‚˜ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ค‘์ฒฉ ์ธ์ฝ”๋”ฉ์˜ ํ”์ ์€ ๊ฒฐ๊ณผ๋ฌผ์—์„œ ๋ฐ”๋กœ ๋“œ๋Ÿฌ๋‚œ๋‹ค. ์–ด๋–ค ๋ฌธ์ž์—ด์„ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ ์—ญ์‹œ A-Z a-z 0-9 + /์™€ =๋งŒ์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ๊ทธ๋ž˜์„œ "๋””์ฝ”๋“œํ–ˆ๋”๋‹ˆ ๋˜ Base64์ฒ˜๋Ÿผ ์ƒ๊ธด ๋ฌธ์ž์—ด"์ด ๋‚˜์˜ค๋ฉด, ํ•œ ๊ฒน ๋” ๊ฐ์‹ธ์ ธ ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ๋‹ค. Vm0wd... ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์ด ๊ฒฝ์šฐ๋‹ค.

๋˜ ํ•˜๋‚˜ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์„ฑ์งˆ์€ Base64๊ฐ€ ์›๋ณธ๋ณด๋‹ค ํ•ญ์ƒ ์ปค์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 3๋ฐ”์ดํŠธ๋ฅผ 4๊ธ€์ž๋กœ ๋ฐ”๊พธ๋‹ˆ ์ธ์ฝ”๋”ฉํ•  ๋•Œ๋งˆ๋‹ค ํฌ๊ธฐ๊ฐ€ 4/3๋ฐฐ(์•ฝ 33%) ๋Š˜์–ด๋‚œ๋‹ค. ๋’ค์ง‘์–ด ๋งํ•˜๋ฉด, ๋””์ฝ”๋“œํ•  ๋•Œ๋งˆ๋‹ค ํฌ๊ธฐ๊ฐ€ 3/4(์•ฝ 25%)๋กœ ์ค„์–ด๋“ ๋‹ค. ์ด ๋ฌธ์ œ์˜ prob.txt๊ฐ€ 100๋งŒ ๋ฐ”์ดํŠธ๊ฐ€ ๋„˜๋Š” ์ด์œ ๋„, 15๋ฐ”์ดํŠธ์งœ๋ฆฌ ํ”Œ๋ž˜๊ทธ๋ฅผ 38๋ฒˆ ์ธ์ฝ”๋”ฉํ•ด์„œ ๋ถ€ํ’€๋ ธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


๐Ÿ”ฌ ์ •์ฐฐ โ€” ํŒŒ์ผ ํ˜•ํƒœ์™€ ๋ฌธ์ž์…‹ ํ™•์ธ

๋จผ์ € ํŒŒ์ผ์ด ์ •๋ง ์ˆœ์ˆ˜ํ•œ Base64 ๋ฉ์–ด๋ฆฌ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

file prob.txt
python3 -c "
import re
s = open('prob.txt').read().strip()
print('base64 ๋ฌธ์ž์…‹๋งŒ ์‚ฌ์šฉ:', bool(re.fullmatch(r'[A-Za-z0-9+/=]+', s)))
print('๊ธธ์ด:', len(s), ' 4์˜ ๋ฐฐ์ˆ˜:', len(s) % 4 == 0)
"

file + ์ •๊ทœ์‹ ๊ฒ€์‚ฌ โ€” ์ค„๋ฐ”๊ฟˆ ์—†๋Š” ํ•œ ์ค„, Base64 ๋ฌธ์ž์…‹๋งŒ ์‚ฌ์šฉ, ๊ธธ์ด๋„ 4์˜ ๋ฐฐ์ˆ˜
file + ์ •๊ทœ์‹ ๊ฒ€์‚ฌ โ€” ์ค„๋ฐ”๊ฟˆ ์—†๋Š” ํ•œ ์ค„, Base64 ๋ฌธ์ž์…‹๋งŒ ์‚ฌ์šฉ, ๊ธธ์ด๋„ 4์˜ ๋ฐฐ์ˆ˜

file์€ "with very long lines (65536)"๋ผ๊ณ  ์•Œ๋ ค์ค€๋‹ค โ€” 100๋งŒ ๋ฐ”์ดํŠธ๊ฐ€ ๋„˜๋Š”๋ฐ ์ค„๋ฐ”๊ฟˆ์ด ํ•˜๋‚˜๋„ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. ์ •๊ทœ์‹ ๊ฒ€์‚ฌ๋กœ๋Š” A-Za-z0-9+/= ๋ฐ–์˜ ๋ฌธ์ž๊ฐ€ ํ•˜๋‚˜๋„ ์—†๊ณ , ๊ธธ์ด๋„ Base64์˜ 4๋ฐ”์ดํŠธ ๋‹จ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค. ์„ธ ์กฐ๊ฑด(๋ฌธ์ž์…‹ยท์ค„๋ฐ”๊ฟˆ ์—†์Œยท4์˜ ๋ฐฐ์ˆ˜ ๊ธธ์ด) ๋‹ค Base64๋ผ๋Š” ๊ฐ€์„ค๊ณผ ๋งž์•„๋–จ์–ด์ง„๋‹ค.

ํ•œ ๋ฒˆ๋งŒ ๋””์ฝ”๋“œํ•ด ๋ณธ๋‹ค.

import base64
s = open("prob.txt").read().strip()
print(base64.b64decode(s).decode()[:60])
# -> "Vm0wd2QyUXl..." ์—ฌ์ „ํžˆ Base64

ํ•œ ๊ฒน ๋ฒ—๊ฒจ๋„ ๋˜ Base64๊ฐ€ ๋‚˜์˜จ๋‹ค. ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ค„์–ด๋“œ๋Š”์ง€ ์ฒ˜์Œ ๋ช‡ ๋ผ์šด๋“œ๋งŒ ์ฐ์–ด๋ดค๋‹ค.

wc -c prob.txt
python3 -c "
import base64
s = open('prob.txt').read().strip()
for i in range(1, 6):
    s = base64.b64decode(s).decode()
    print(f'round {i:2d}: {len(s):7d} bytes')
"

ํŒŒ์ผ ํฌ๊ธฐ 100๋งŒ ๋ฐ”์ดํŠธ์—์„œ ์‹œ์ž‘ํ•ด ๋ผ์šด๋“œ๋งˆ๋‹ค ์ •ํ™•ํžˆ 75%๋กœ ์ค„์–ด๋“œ๋Š” ๊ฑธ ํ™•์ธ
ํŒŒ์ผ ํฌ๊ธฐ 100๋งŒ ๋ฐ”์ดํŠธ์—์„œ ์‹œ์ž‘ํ•ด ๋ผ์šด๋“œ๋งˆ๋‹ค ์ •ํ™•ํžˆ 75%๋กœ ์ค„์–ด๋“œ๋Š” ๊ฑธ ํ™•์ธ

800984, 600736, 450552... ๋งค ๋ผ์šด๋“œ ์ •ํ™•ํžˆ ์ด์ „ ๊ฐ’์˜ 0.75๋ฐฐ๋‹ค. ๋ฐฐ๊ฒฝ์—์„œ ๊ณ„์‚ฐํ•œ "๋””์ฝ”๋“œํ•  ๋•Œ๋งˆ๋‹ค 3/4๋กœ ์ค„์–ด๋“ ๋‹ค"๋Š” ์˜ˆ์ธก์ด ์‹ค์ œ ๋ฐ์ดํ„ฐ๋กœ ๊ทธ๋Œ€๋กœ ํ™•์ธ๋œ๋‹ค.



๐ŸŽฏ ํ’€์ด โ€” ๋ฒ—๊ฒจ์งˆ ๋•Œ๊นŒ์ง€ ๋ฒ—๊ธด๋‹ค

์ด๊ฑธ ์†์œผ๋กœ ๋ฐ˜๋ณตํ•˜๊ธด ์ง€์น˜๋‹ˆ, "๋” ์ด์ƒ Base64๊ฐ€ ์•„๋‹ ๋•Œ๊นŒ์ง€" ์ž๋™์œผ๋กœ ๋ฒ—๊ธฐ๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ข…๋ฃŒ ์กฐ๊ฑด์€ ๋””์ฝ”๋“œ ๊ฒฐ๊ณผ์— ํ”Œ๋ž˜๊ทธ ํ˜•์‹(DH{)์ด ๋ณด์ด๋Š” ์ˆœ๊ฐ„์ด๋‹ค.

# solve.py
import base64
s = open("prob.txt").read().strip()
for i in range(1, 100):
    s = base64.b64decode(s).decode()
    if "DH{" in s:
        print(f"[{i}ํšŒ] FLAG: {s}"); break

solve.py ์‹คํ–‰ โ€” 38๋ฒˆ ๋””์ฝ”๋“œํ•˜๋‹ˆ DH๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค
solve.py ์‹คํ–‰ โ€” 38๋ฒˆ ๋””์ฝ”๋“œํ•˜๋‹ˆ DH๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค

๋งˆ์ง€๋ง‰ ๋ช‡ ๋ผ์šด๋“œ๋งŒ ๋”ฐ๋กœ ์ฐ์–ด๋ณด๋ฉด ์–ด๋–ป๊ฒŒ ์ˆ˜๋ ดํ•˜๋Š”์ง€ ๋” ์ž˜ ๋ณด์ธ๋‹ค.

python3 -c "
import base64
s = open('prob.txt').read().strip()
for i in range(1, 39):
    s = base64.b64decode(s).decode()
    tag = f'  -> {s}' if i >= 36 else ''
    print(f'round {i:2d}: {len(s):4d} bytes{tag}')
" | tail -6

python3 ํ•œ ์ค„ ๋ช…๋ น์œผ๋กœ 38๋ผ์šด๋“œ base64 ๋””์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฐ ๋’ค tail -6 ์œผ๋กœ ๋๋งŒ ๋ณธ ํ™”๋ฉด โ€” 76, 56, 40, 28, 20๋ฐ”์ดํŠธ๋กœ ์ค„์–ด๋“ค๋‹ค 38๋ฒˆ์งธ์— DH ๋กœ ์‹œ์ž‘ํ•˜๋Š” hellobase64 ํ”Œ๋ž˜๊ทธ๋กœ ์ˆ˜๋ ดํ•œ๋‹ค
python3 ํ•œ ์ค„ ๋ช…๋ น์œผ๋กœ 38๋ผ์šด๋“œ base64 ๋””์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฐ ๋’ค tail -6 ์œผ๋กœ ๋๋งŒ ๋ณธ ํ™”๋ฉด โ€” 76, 56, 40, 28, 20๋ฐ”์ดํŠธ๋กœ ์ค„์–ด๋“ค๋‹ค 38๋ฒˆ์งธ์— DH ๋กœ ์‹œ์ž‘ํ•˜๋Š” hellobase64 ํ”Œ๋ž˜๊ทธ๋กœ ์ˆ˜๋ ดํ•œ๋‹ค

36๋ผ์šด๋“œ๊นŒ์ง€๋„ ์—ฌ์ „ํžˆ Base64 ๋ฌธ์ž์—ด(UkVoN2FHVnNiRz...)์ด๋˜ ๊ฒŒ, 38๋ผ์šด๋“œ์—์„œ ๋“œ๋””์–ด ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” DH{hellobase64}๋กœ ๋–จ์–ด์ง„๋‹ค. ๊ฒน์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ๋ฟ, ๊ฐ ๊ฒน์€ ๋˜‘๊ฐ™์€ Base64๋ผ ๋ฒ—๊ธฐ๋Š” ์ ˆ์ฐจ๋„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋˜‘๊ฐ™๋‹ค.

100๋งŒ ๋ฐ”์ดํŠธ์งœ๋ฆฌ Base64 ๋ฉ์–ด๋ฆฌ๋ฅผ 38๋ฒˆ ๋ฐ˜๋ณต ๋””์ฝ”๋“œํ•˜๋ฉด ์งง์€ flag ํ•˜๋‚˜๋กœ ์ˆ˜๋ ดํ•œ๋‹ค
100๋งŒ ๋ฐ”์ดํŠธ์งœ๋ฆฌ Base64 ๋ฉ์–ด๋ฆฌ๋ฅผ 38๋ฒˆ ๋ฐ˜๋ณต ๋””์ฝ”๋“œํ•˜๋ฉด ์งง์€ flag ํ•˜๋‚˜๋กœ ์ˆ˜๋ ดํ•œ๋‹ค

FLAG: DH{hellobase64}



๐Ÿ“ ๊ฒฐ๋ก 

์ธ์ฝ”๋”ฉ์€ ๋ช‡ ๊ฒน์ด์–ด๋„ ์ธ์ฝ”๋”ฉ์ด๋‹ค. Base64๋ฅผ ์•„๋ฌด๋ฆฌ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฒน์ณ๋„ ๊ฐ ๊ฒน์€ ํ‚ค ์—†์ด ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„ ๋ณ€ํ™˜์ผ ๋ฟ์ด๋‹ค. ๊ฒน์˜ ์ˆ˜๊ฐ€ ๋ฐฉ์–ด๊ฐ€ ๋˜์ง€๋Š” ๋ชปํ•œ๋‹ค. ์ •์ฒด ๋ชจ๋ฅผ ๋ฌธ์ž์—ด์ด A-Z a-z 0-9 + / =๋กœ๋งŒ ์ด๋ค„์ ธ ์žˆ์œผ๋ฉด Base64๋ฅผ ๋จผ์ € ์˜์‹ฌํ•˜๊ณ , ๊ฒฐ๊ณผ๊ฐ€ ๋˜ ๊ทธ ๊ผด์ด๋ฉด ํ•œ ๊ฒน ๋” ๋ฒ—๊ธฐ๋ฉด ๋œ๋‹ค.

ํฌ๊ธฐ ๋ณ€ํ™”๊ฐ€ ํžŒํŠธ๊ฐ€ ๋  ๋•Œ๋„ ์žˆ๋‹ค. ์ด๋ฒˆ ๋ฌธ์ œ์ฒ˜๋Ÿผ ์›๋ณธ ํŒŒ์ผ์ด ์œ ๋‚œํžˆ ํฐ๋ฐ ๋‚ด์šฉ๋ฌผ์€ ์งง์€ ํ”Œ๋ž˜๊ทธ ํ•˜๋‚˜๋ฟ์ด๋ผ๋ฉด, "์ธ์ฝ”๋”ฉ์ด ์—ฌ๋Ÿฌ ๊ฒน ์”Œ์›Œ์ ธ ๋ถ€ํ’€์—ˆ๋‹ค"๋Š” ๊ฐ€์„ค์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค. Base64๋Š” ๊ฒน๋งˆ๋‹ค ์ •ํ™•ํžˆ 4/3๋ฐฐ ์ปค์ง€๋ฏ€๋กœ, ์—ญ์œผ๋กœ ํŒŒ์ผ ํฌ๊ธฐ์™€ ์˜ˆ์ƒ๋˜๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ ํฌ๊ธฐ์˜ ๋น„์œจ์„ ๋ณด๋ฉด ๋Œ€๋žต ๋ช‡ ๊ฒน์ธ์ง€๋„ ๋ฏธ๋ฆฌ ๊ฐ€๋Š ํ•  ์ˆ˜ ์žˆ๋‹ค(์ด ๋ฌธ์ œ๋ผ๋ฉด log(1067980/15) / log(4/3) โ‰ˆ 38).

์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋ฌธ์ œ์˜ ํ˜•์‹์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ช‡ ๋ฒˆ ๋ฒ—๊ฒจ์•ผ ํ•˜๋Š”์ง€ ๋ฏธ๋ฆฌ ์…€ ํ•„์š” ์—†์ด, ํ”Œ๋ž˜๊ทธ ํ˜•์‹(DH{)์ด ๋‚˜ํƒ€๋‚˜๋Š” ์ˆœ๊ฐ„์„ ์ข…๋ฃŒ ์กฐ๊ฑด์œผ๋กœ ์‚ผ์œผ๋ฉด ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋ชฐ๋ผ๋„ ์ž๋™์œผ๋กœ ๋ฉˆ์ถ˜๋‹ค. ํฌ๋งท์ด ๊ณ ์ •๋œ ํ”Œ๋ž˜๊ทธ๋Š” ์ด๋Ÿฐ ์ž๋™ํ™”์— ๋Š˜ ์ข‹์€ ์‹ ํ˜ธ๊ฐ€ ๋œ๋‹ค.

์ด ๊ธ€์ด ๋„์›€์ด ๋๋‚˜์š”?

Comments

๋Œ“๊ธ€

0๊ฐœ

๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ด์š”. (๋„ค์ด๋ฒ„ ยท ๊ตฌ๊ธ€ ๊ณ„์ •)

๋Œ“๊ธ€ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘โ€ฆ

Related

๊ด€๋ จ ๊ธ€

3๊ฐœ
[๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 4] ๊ฒน๊ฒน์ด ์ธ์ฝ”๋”ฉ๋œ base64 ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack Base64 10 Times ํ’€์ด
blog

[๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 4] ๊ฒน๊ฒน์ด ์ธ์ฝ”๋”ฉ๋œ base64 ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack Base64 10 Times ํ’€์ด

๋ฌธ์ œ ์„ค๋ช…์— ๊ธด base64 ๋ฌธ์ž์—ด ํ•˜๋‚˜๋งŒ ์ฃผ์–ด์ง„๋‹ค. ๋””์ฝ”๋“œํ•˜๋ฉด ๋˜ base64, ๋‹ค์‹œ ๋””์ฝ”๋“œํ•ด๋„ ๋˜ base64 โ€” ์—ฌ๋Ÿฌ ๊ฒน์œผ๋กœ ์ธ์ฝ”๋”ฉ๋ผ ์žˆ๋‹ค. ๋งค ์ธต ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ์ „ํžˆ ์ธ์‡„ ๊ฐ€๋Šฅํ•œ base64๋ผ, ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ณด์ผ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ๋””์ฝ”๋“œํ•˜๋ฉด ๋œ๋‹ค. ์—ดํ•œ ๋ฒˆ ๋ฒ—๊ธฐ๋‹ˆ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์™”๋‹ค.
#dreamhack#ctf#crypto+3
2026-07-13#dreamhack +5
[๐ŸŒฑ ์ƒˆ์‹น] ์ด๋ฆ„์€ base64, ์ •์ฒด๋Š” base32 โ€” DreamHack likeb64 ํ’€์ด
blog

[๐ŸŒฑ ์ƒˆ์‹น] ์ด๋ฆ„์€ base64, ์ •์ฒด๋Š” base32 โ€” DreamHack likeb64 ํ’€์ด

target.txt ์•ˆ์— base64์ฒ˜๋Ÿผ ์ƒ๊ธด ๋ฌธ์ž์—ด ํ•˜๋‚˜๋งŒ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ '=' ํŒจ๋”ฉ์ด 3๊ฐœ๊ณ , ๋ฐ์ดํ„ฐ ๊ธธ์ด๊ฐ€ 4์˜ ๋ฐฐ์ˆ˜์—์„œ ํ•˜๋‚˜ ์–ด๊ธ‹๋‚˜๋ฉฐ, ์ˆซ์ž์™€ +/ ๊ธฐํ˜ธ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค. base64 ๊ทœ์น™์œผ๋กœ๋Š” ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ์ถœ๋ ฅ์ด๋‹ค. ๋ฌธ์ œ ์„ค๋ช…์ด ํ˜๋ฆฐ 32๊ธ€์ž ์•ŒํŒŒ๋ฒณ์„ ๋‹จ์„œ๋กœ ์ด๊ฒƒ์ด ์ปค์Šคํ…€ ์•ŒํŒŒ๋ฒณ base32(์ˆซ์ž 2-7 ์ž๋ฆฌ๋ฅผ a-f๋กœ ๋ฐ”๊พผ ๊ฒƒ)์ž„์„ ๋ฐํžˆ๊ณ , ์•ŒํŒŒ๋ฒณ๋งŒ ๋˜๋Œ๋ ค ๋ณตํ˜ธํ•œ๋‹ค.
#dreamhack#ctf#crypto+4
2026-07-13#dreamhack +5
[๐Ÿฅ‰ Bronze 2] ์„ธ ๊ฒน์œผ๋กœ ํฌ์žฅํ•œ ๊ทค ์ƒ์ž ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack ๊ฐ๊ทค ํฌ์žฅํ•˜๊ธฐ ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 2] ์„ธ ๊ฒน์œผ๋กœ ํฌ์žฅํ•œ ๊ทค ์ƒ์ž ๋ฒ—๊ธฐ๊ธฐ โ€” DreamHack ๊ฐ๊ทค ํฌ์žฅํ•˜๊ธฐ ํ’€์ด

ํ”Œ๋ž˜๊ทธ๋ฅผ wrap(์•„ํ•€ ๊ณฑ์…ˆ)ยทbox(์œ„์น˜๋ณ„ XOR)ยทtruck(๋’ค์ง‘์€ ํ…Œ์ด๋ธ” base64) ์„ธ ๋ณ€ํ™˜์œผ๋กœ ํฌ์žฅํ•œ ๋ฌธ์ œ. ๋ฌธ์ œ ์„ค๋ช… ์ž์ฒด๊ฐ€ 4์ปท ๋งŒํ™”๋กœ "์ฆ™ ์งœ๊ณ  ์–‘๋… ์น˜๊ธฐ โ†’ ๋งˆ๊ตฌ์žก์ด๋กœ ์„ž๊ณ  ํ…Œ์ดํ”„๋กœ ๊ฐ๊ธฐ โ†’ ๋’ค์ฃฝ๋ฐ•์ฃฝ ๊ธ€์ž ํŠธ๋Ÿญ์— ์‹ฃ๊ธฐ โ†’ ๋ฐฐ์†ก ์™„๋ฃŒ"๋ฅผ ๊ทธ๋ ค ๋†“์•˜๋‹ค. ์„ธ ๋ณ€ํ™˜์ด ๋ชจ๋‘ ๊ฐ€์—ญ์ด๋ผ, ์ ์šฉ๋œ ์—ญ์ˆœ์œผ๋กœ base64๋ฅผ ํ’€๊ณ  XOR๋ฅผ ๋˜๋Œ๋ฆฌ๊ณ  ์•„ํ•€์„ ์—ญ์‚ฐํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค.
#dreamhack#ctf#crypto+4
2026-07-14#dreamhack +4