[๐Ÿฅ‰ Bronze 2] ๋’ค์ง‘ํžŒ base64 ์†์— ์ˆจ์€ JSFuck โ€” DreamHack reverse_decoding ํ’€์ด

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

[๐Ÿฅ‰ Bronze 2] ๋’ค์ง‘ํžŒ base64 ์†์— ์ˆจ์€ JSFuck โ€” DreamHack reverse_decoding ํ’€์ด

์ด๋ฉ”์ผ๋กœ ๋ฐ›์€ JPG๊ฐ€ ์—ด๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์•ž๋ถ€๋ถ„์˜ ๋„ ๋ฐ”์ดํŠธ๋ฅผ ๊ฑท์–ด ๋‚ด๋ฉด ํŒŒ์ผ์ด ํ†ต์งธ๋กœ ๋’ค์ง‘ํ˜€ ์žˆ๊ณ , ๋จธ๋ฆฌ์— ๋ถ™์€ base64๋Š” padding์ด ์•ž์— ์˜จ ์—ญ์ˆœ ๋ฌธ์ž์—ด์ด๋‹ค. ๋’ค์ง‘์–ด ๋””์ฝ”๋“œํ•˜๋ฉด JSFuck์ด ๋‚˜์˜ค๊ณ , ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  eval์„ ๊ฐ€๋กœ์ฑ„๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

๋ฌธ์ œ: DreamHack โ€” reverse_decoding ๋ถ„๋ฅ˜: Misc ๋‚œ์ด๋„: ๐Ÿฅ‰ Bronze 2 FLAG: bisc2024{h1dd3n_1n_p14in_JS}

์ฒ ์ˆ˜๊ฐ€ ์ด๋ฉ”์ผ๋กœ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ, ํŒŒ์ผ์ด ์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ฆฌ JPG ์ด๋ฏธ์ง€์˜€๊ณ  ๊ทธ๋งˆ์ €๋„ ์†์ƒ๋ผ ์—ด๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๋ฌธ์ œ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ "๊ฑฐ๊พธ๋กœ ์ธ์ฝ”๋”ฉ๋œ" ํŒŒ์ผ์ด๋‹ค. ๋’ค์ง‘๋Š” ์ˆœ๊ฐ„ ์œ ํšจํ•œ ์ด๋ฏธ์ง€์™€ ์ˆจ์€ ์ฝ”๋“œ๊ฐ€ ๋™์‹œ์— ํŠ€์–ด๋‚˜์˜จ๋‹ค.

์†์ƒ JPG๋ฅผ ๋’ค์ง‘์–ด ์—ญ์ˆœ base64๋ฅผ ๋””์ฝ”๋“œํ•˜๋ฉด JSFuck์ด ๋‚˜์˜ค๊ณ  eval ํ›…์œผ๋กœ ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฐ€๋กœ์ฑˆ๋‹ค
์†์ƒ JPG๋ฅผ ๋’ค์ง‘์–ด ์—ญ์ˆœ base64๋ฅผ ๋””์ฝ”๋“œํ•˜๋ฉด JSFuck์ด ๋‚˜์˜ค๊ณ  eval ํ›…์œผ๋กœ ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฐ€๋กœ์ฑˆ๋‹ค

๋ฌธ์ œ ๊ฐœ์š”

ํ•ญ๋ชฉ๋‚ด์šฉ
๋ฌธ์ œ๋ช…reverse_decoding
๋‚œ์ด๋„๐Ÿฅ‰ Bronze 2
๋ถ„๋ฅ˜Misc
์ œ๊ณต ํŒŒ์ผReverse_Decoding.jpg (์†์ƒ๋œ JPG)
ํ•ต์‹ฌ ๊ธฐ๋ฒ•์—ญ์ˆœ base64 + JSFuck ๋””์ฝ”๋“œ (eval ๊ฐ€๋กœ์ฑ„๊ธฐ)

ํŒŒ์ผ ์ด๋ฆ„ Reverse_Decoding ์ž์ฒด๊ฐ€ ํžŒํŠธ๋‹ค. "๊ฑฐ๊พธ๋กœ ๋œ ๊ฒƒ์„ ๋””์ฝ”๋“œํ•˜๋ผ"๋Š” ๋œป์ด๋‹ค.



๐Ÿ”ฌ ์ •์ฐฐ โ€” ํŒŒ์ผ์ด ๋’ค์ง‘ํ˜€ ์žˆ๋‹ค

file ๋ช…๋ น์€ ์ด JPG๋ฅผ data(์ •์ฒด ๋ถˆ๋ช…)๋กœ ๋ณธ๋‹ค. ํ—ค๋”๋ฅผ ๋ณด๋ฉด ์•ž์— ๋„ ๋ฐ”์ดํŠธ๊ฐ€ ๊น”๋ ค ์žˆ๊ณ  ๊ทธ ๋’ค๋กœ ==QK... ๊ฐ™์€ base64์Šค๋Ÿฌ์šด ๋ฌธ์ž์—ด์ด ์ด์–ด์ง„๋‹ค.

xxd -l 48 Reverse_Decoding.jpg
xxd ๋กœ ๋ณธ ํŒŒ์ผ ๋จธ๋ฆฌ โ€” ๋„ ๋ฐ”์ดํŠธ ๋’ค์— == ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์—ญ์ˆœ base64
xxd ๋กœ ๋ณธ ํŒŒ์ผ ๋จธ๋ฆฌ โ€” ๋„ ๋ฐ”์ดํŠธ ๋’ค์— == ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์—ญ์ˆœ base64

์—ฌ๊ธฐ์„œ ๊ฒฐ์ •์ ์ธ ๋‹จ์„œ๋Š” ๋ฌธ์ž์—ด์ด ==๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. base64์—์„œ =๋Š” padding์ด๋ผ ์ •์ƒ์ ์œผ๋กœ๋Š” ๋ฌธ์ž์—ด ๋์—๋งŒ ์˜จ๋‹ค. ==๊ฐ€ ๋งจ ์•ž์— ์žˆ๋‹ค๋Š” ๊ฑด ์ด ๋ฌธ์ž์—ด์ด ํ†ต์งธ๋กœ ๋’ค์ง‘ํ˜€ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

์‹ค์ œ๋กœ ํŒŒ์ผ ์ „์ฒด๋ฅผ ๋’ค์ง‘์–ด ๋ณด๋ฉด ์•ž๋ถ€๋ถ„์ด FF D8 FF E0 โ€ฆ JFIF, ์ •ํ™•ํžˆ JPEG ์‹œ๊ทธ๋‹ˆ์ฒ˜๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์ฆ‰ ์ด ํŒŒ์ผ์€ ์œ ํšจํ•œ JPEG๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋’ค์ง‘์–ด ์ €์žฅํ•œ ๊ฒƒ์ด๋‹ค. ๋’ค์ง‘์–ด ์ €์žฅํ•˜๋ฉด ์›๋ž˜ ๋(๊ผฌ๋ฆฌ)์— ๋ถ™์–ด ์žˆ๋˜ base64 ๋ฐ์ดํ„ฐ๊ฐ€ ํŒŒ์ผ ๋จธ๋ฆฌ๋กœ ์˜ฌ๋ผ์˜จ๋‹ค.


๐Ÿงฉ ๋ฐฐ๊ฒฝ โ€” base64 ์™€ JSFuck

base64๋Š” 3๋ฐ”์ดํŠธ(24๋น„ํŠธ)๋ฅผ 6๋น„ํŠธ์”ฉ ๋„ท์œผ๋กœ ์ชผ๊ฐœ 64๊ธ€์ž ์•ŒํŒŒ๋ฒณ(A~Z a~z 0~9 + /)์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ธ์ฝ”๋”ฉ์ด๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํ…์ŠคํŠธ ์ฑ„๋„๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋‚˜๋ฅด๋Š” ์šฉ๋„์ด๋ฉฐ, ๋‚จ๋Š” ์ž๋ฆฌ๋Š” =๋กœ ์ฑ„์šด๋‹ค.

base64 ์ธ์ฝ”๋”ฉ โ€” ๋ฐ”์ดํŠธ๋ฅผ 6๋น„ํŠธ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ 64๊ธ€์ž ์•ŒํŒŒ๋ฒณ์— ๋Œ€์‘์‹œํ‚จ๋‹ค
base64 ์ธ์ฝ”๋”ฉ โ€” ๋ฐ”์ดํŠธ๋ฅผ 6๋น„ํŠธ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ 64๊ธ€์ž ์•ŒํŒŒ๋ฒณ์— ๋Œ€์‘์‹œํ‚จ๋‹ค

์ถœ์ฒ˜: Wikimedia Commons (File:Base64bin2txt.png), CC0 / public domain

๋””์ฝ”๋“œํ•ด์„œ ๋‚˜์˜ค๋Š” ๊ฑด JSFuck์ด๋‹ค. JSFuck์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์˜ค์ง [ ] ( ) ! + ์—ฌ์„ฏ ๊ธ€์ž๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋‚œ๋…ํ™” ๊ธฐ๋ฒ•์ด๋‹ค. ![]๋Š” false, +[]๋Š” 0, []+[]๋Š” ๋นˆ ๋ฌธ์ž์—ด์ฒ˜๋Ÿผ, ์›์‹œ๊ฐ’๊ณผ ํ˜•๋ณ€ํ™˜์„ ์กฐํ•ฉํ•ด ์ˆซ์žยท๋ฌธ์žยทํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ๋Š” Function("์ฝ”๋“œ")() ํ˜•ํƒœ๋กœ ์ž„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋ณต๊ตฌ๋œ ์ด๋ฏธ์ง€์—๋„ JSFUCK, DECODE THE SECRET์ด๋ผ๋Š” ํžŒํŠธ๊ฐ€ ํผ์งํ•˜๊ฒŒ ๋ฐ•ํ˜€ ์žˆ๋‹ค.

ํŒŒ์ผ์„ ๋’ค์ง‘์œผ๋ฉด ๋ณต๊ตฌ๋˜๋Š” JPEG โ€” JSFUCK ๊ณผ DECODE THE SECRET ํžŒํŠธ ํฌ์Šคํ„ฐ
ํŒŒ์ผ์„ ๋’ค์ง‘์œผ๋ฉด ๋ณต๊ตฌ๋˜๋Š” JPEG โ€” JSFUCK ๊ณผ DECODE THE SECRET ํžŒํŠธ ํฌ์Šคํ„ฐ


๐Ÿ’ฃ ํ•ต์‹ฌ โ€” ์‹คํ–‰ํ•˜์ง€ ๋ง๊ณ  eval ์„ ๊ฐ€๋กœ์ฑ„๋ผ

JSFuck์„ ๊ทธ๋ƒฅ ์‹คํ–‰ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ()์—์„œ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„ ๋ฒ„๋ฆฐ๋‹ค. CTF ํŽ˜์ด๋กœ๋“œ๋Š” ๋Œ€๊ฐœ ๋ฌดํ•ดํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ”Œ๋ž˜๊ทธ ๋ฌธ์ž์—ด๋กœ ํ๋ฅด๋‹ค๊ฐ€ { ๋•Œ๋ฌธ์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋กœ ํŠ„๋‹ค. ๊ทธ๋ž˜์„œ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹ , JSFuck์ด ์ตœ์ข…์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” eval์„ ๊ฐ€๋กœ์ฑ„ ๊ทธ ์ธ์ž(=๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ/๋ฌธ์ž์—ด)๋งŒ ๊บผ๋‚ธ๋‹ค.

// extract.js โ€” eval ์„ ํ›…์œผ๋กœ ๋ฐ”๊ฟ” ์‹คํ–‰ ์—†์ด ์ธ์ž๋งŒ ํšŒ์ˆ˜
const fs = require("fs");
let code = fs.readFileSync("payload.jsfuck.js", "utf8").trim();
const realEval = globalThis.eval;
let flag = null;
globalThis.eval = function (a) { flag = a; return ""; };  // ์‹คํ–‰ ๋Œ€์‹  ์ธ์ž ์ €์žฅ
try { realEval.call(globalThis, code); } catch (e) {}
console.log("FLAG:", flag);

JSFuck์€ Function("return eval")()๋กœ ์ง„์งœ eval ์ฐธ์กฐ๋ฅผ ์–ป์€ ๋’ค eval(๋งŒ๋“ _๋ฌธ์ž์—ด)์„ ํ˜ธ์ถœํ•œ๋‹ค. ๊ทธ eval์€ ์Šค์ฝ”ํ”„์—์„œ ์ „์—ญ eval์„ ์ฐพ์œผ๋ฏ€๋กœ, ์ „์—ญ eval์„ ์šฐ๋ฆฌ ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ” ๋‘๋ฉด ์ธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์†์— ๋“ค์–ด์˜จ๋‹ค. ๊ทธ ์ธ์ž๊ฐ€ ๊ณง ํ”Œ๋ž˜๊ทธ๋‹ค. ์ธ์ž ๋ฌธ์ž์—ด์€ \173({), \175(}), \137(_) ๊ฐ™์€ 8์ง„ ์ด์Šค์ผ€์ดํ”„๋กœ ์กฐ๋ฆฝ๋ผ ์žˆ์—ˆ๋‹ค.


๐ŸŽฏ ํ’€์ด โ€” ๋’ค์ง‘๊ธฐ โ†’ base64 โ†’ JSFuck โ†’ ํ”Œ๋ž˜๊ทธ

# solve.py
import base64, subprocess
raw = open("Reverse_Decoding.jpg", "rb").read()
s = raw.lstrip(b"\x00")                       # ์•ž์ชฝ ๋„ ์ œ๊ฑฐ
b64 = set(b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")
i = 0
while i < len(s) and s[i] in b64: i += 1       # ๋จธ๋ฆฌ์˜ base64 ๊ตฌ๊ฐ„๋งŒ ์ž˜๋ผ
jsfuck = base64.b64decode(s[:i][::-1])         # ๋’ค์ง‘์–ด ๋””์ฝ”๋“œ โ†’ JSFuck
open("payload.jsfuck.js", "wb").write(jsfuck)
print("[1] reversed base64 ->", len(jsfuck), "bytes of JSFuck:", jsfuck[:24].decode(), "...")
out = subprocess.run(["node", "extract.js"], capture_output=True, text=True).stdout.strip()
print("[2] node eval-hook ->", out)
solve.py ์‹คํ–‰ โ€” ์—ญ์ˆœ base64 ๋ฅผ JSFuck ์œผ๋กœ ๋””์ฝ”๋“œํ•˜๊ณ  node eval ํ›…์œผ๋กœ ๋ฝ‘์€ ํ”Œ๋ž˜๊ทธ
solve.py ์‹คํ–‰ โ€” ์—ญ์ˆœ base64 ๋ฅผ JSFuck ์œผ๋กœ ๋””์ฝ”๋“œํ•˜๊ณ  node eval ํ›…์œผ๋กœ ๋ฝ‘์€ ํ”Œ๋ž˜๊ทธ

์—ญ์ˆœ base64๋ฅผ ๋’ค์ง‘์–ด ๋””์ฝ”๋“œํ•˜๋‹ˆ 8260๋ฐ”์ดํŠธ์งœ๋ฆฌ JSFuck์ด ๋‚˜์˜ค๊ณ , eval์„ ๊ฐ€๋กœ์ฑ„๋‹ˆ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋–จ์–ด์ง„๋‹ค. ํ”Œ๋ž˜๊ทธ ๋‚ด์šฉ h1dd3n_1n_p14in_JS("hidden in plain JS")๊ฐ€ ๋ฌธ์ œ์˜ ์ •์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋งํ•ด ์ค€๋‹ค.

FLAG: bisc2024{h1dd3n_1n_p14in_JS}



๐Ÿ“ ๊ฒฐ๋ก 

"์•ˆ ์—ด๋ฆฌ๋Š” ํŒŒ์ผ"์€ ํ˜•์‹์ด ์•„๋‹ˆ๋ผ ๋ฐฐ์น˜๊ฐ€ ๋’ค์ง‘ํžŒ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

file์ด ์ •์ฒด๋ฅผ ๋ชป ๋งžํžˆ๊ณ  ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์•ˆ ๋ณด์ผ ๋•Œ, ๋’ค์ง‘๊ธฐยทXORยท๋น„ํŠธ ๋ฐ˜์ „ ๊ฐ™์€ ๋‹จ์ˆœ ๋ณ€ํ™˜์„ ๋จผ์ € ์˜์‹ฌํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” base64 padding =์ด ๋ฌธ์ž์—ด ์•ž์— ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ํ•˜๋‚˜๊ฐ€ "๋’ค์ง‘ํ˜€ ์žˆ๋‹ค"๋Š” ๊ฑธ ํ™•์ •ํ•ด ์คฌ๋‹ค. ์ธ์ฝ”๋”ฉ์˜ ๊ณ ์ •๋œ ํŠน์ง•(์‹œ๊ทธ๋‹ˆ์ฒ˜ยทpadding ์œ„์น˜)์€ ๋ฐฉํ–ฅ์„ ์•Œ๋ ค์ฃผ๋Š” ๋‚˜์นจ๋ฐ˜์ด๋‹ค.

๋‚œ๋…ํ™” ์ฝ”๋“œ๋Š” ์‹คํ–‰ํ•˜์ง€ ๋ง๊ณ  ๊ฐ€๋กœ์ฑ„๋ผ.

JSFuckยทpacker ๋ฅ˜๋Š” ๊ฒฐ๊ตญ eval์ด๋‚˜ Function์œผ๋กœ ์›๋ณธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๊ทธ ๊ด€๋ฌธ ํ•˜๋‚˜๋งŒ ํ›„ํ‚นํ•˜๋ฉด ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ์›๋ณธ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์˜ ๊ธฐ๋ณธ๊ธฐ์ด์ž, ์ด ๋ฌธ์ œ์—์„œ๋Š” ๊ฐ€์žฅ ๊น”๋”ํ•œ ์ง€๋ฆ„๊ธธ์ด์—ˆ๋‹ค.

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

Comments

๋Œ“๊ธ€

0๊ฐœ

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

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

Related

๊ด€๋ จ ๊ธ€

3๊ฐœ
[๐Ÿฅ‰ Bronze 1] 31์ค„ ๋ฐœ์ทŒ๋ณธ์ด base64 ์ธ์ฝ”๋”๋ผ๋Š” ๊ฑธ ์ฆ๋ช…ํ•˜๊ธฐ โ€” DreamHack [CodeEngn] Malware L05 ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 1] 31์ค„ ๋ฐœ์ทŒ๋ณธ์ด base64 ์ธ์ฝ”๋”๋ผ๋Š” ๊ฑธ ์ฆ๋ช…ํ•˜๊ธฐ โ€” DreamHack [CodeEngn] Malware L05 ํ’€์ด

์•…์„ฑ์ฝ”๋“œ ์†Œ์Šค 31์ค„๋งŒ ์ฃผ๊ณ  "๋ฌด์—‡์„ ํ•˜๋Š” ํ•จ์ˆ˜์ธ๊ฐ€"๋ฅผ ๋ฌป๋Š”๋‹ค. ํ‘œ์ค€ ์•ŒํŒŒ๋ฒณ 64์ž์™€ 6๋น„ํŠธ ๋งˆ์Šคํฌ๊ฐ€ ๋ณด์ด๋‹ˆ base64 ๊ฐ™์€๋ฐ, ๋ˆˆ์œผ๋กœ ์ฐ๋Š” ๋Œ€์‹  ๊ฐ€๋ ค์ง„ ๋‘ ์ค„์„ ์ฑ„์›Œ ์ปดํŒŒ์ผํ•˜๊ณ  ์ž…๋ ฅ 304์ข…์„ ํ‘œ์ค€๊ณผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋งž์ถฐ ๋ดค๋‹ค. ๋ค์œผ๋กœ ์ด ๊ตฌํ˜„์ด 3์˜ ๋ฐฐ์ˆ˜ ์•„๋‹Œ ๊ธธ์ด์—์„œ ํ„ฐ์ง€๊ณ  76์—ด ๊ทœ๊ฒฉ๋„ ์–ด๊ธด๋‹ค๋Š” ๊ฒƒ๊นŒ์ง€ ์‹ค์ธกํ–ˆ๋‹ค.
#dreamhack#ctf#misc+6
2026-08-19#dreamhack +4
[๐Ÿฅ‰ Bronze 3] base64 ์•ˆ์— ์ˆจ๊ฒจ์ง„ ASCII ๋ฐฐ์—ด โ€” DreamHack 64se64 ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 3] base64 ์•ˆ์— ์ˆจ๊ฒจ์ง„ ASCII ๋ฐฐ์—ด โ€” DreamHack 64se64 ํ’€์ด

zip ์•ˆ index.html์˜ hidden input์— ๋ฐ•ํžŒ base64 ๋ฌธ์ž์—ด์„ ๋””์ฝ”๋”ฉํ•˜๋ฉด ASCII ์ฝ”๋“œ ๋ฐฐ์—ด์„ chr()๋กœ ํ•ฉ์น˜๋Š” ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‚˜์˜จ๋‹ค. ๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
#dreamhack#ctf#misc+4
2026-05-26#dreamhack +4
[๐Ÿฅ‰ Bronze 4] ์ธ์ฝ”๋”ฉ ์ฒด์ธ์„ ์—ญ์ˆœ์œผ๋กœ ๋˜๊ฐ๊ธฐ โ€” DreamHack tools-cyberchef ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 4] ์ธ์ฝ”๋”ฉ ์ฒด์ธ์„ ์—ญ์ˆœ์œผ๋กœ ๋˜๊ฐ๊ธฐ โ€” DreamHack tools-cyberchef ํ’€์ด

index.html ํ•œ ์žฅ์— ์•”ํ˜ธ๋ฌธ๊ณผ "Rail Fence โ†’ Base64 โ†’ ROT13" ๋ผ๋Š” ์ธ์ฝ”๋”ฉ ์ˆœ์„œ๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. ์ธ์ฝ”๋”ฉ์„ ๊ฑฐ๊พธ๋กœ(ROT13 โ†’ From Base64 โ†’ Rail Fence Decode) ๋˜๊ฐ์œผ๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๋ฆ„๊ฐ’์„ ํ•˜๋Š” ๋ฌธ์ œ๋‹ต๊ฒŒ CyberChef ๋ ˆ์‹œํ”ผ๋กœ, ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ด์ฌ์œผ๋กœ ๋ณต์›ํ•ด ๋ผ์šด๋“œํŠธ๋ฆฝ๊นŒ์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
#dreamhack#ctf#misc+6
2026-06-25#dreamhack +4