[2025 Codegate ์˜ˆ์„ ] - Write Up & ํ›„๊ธฐ

2025. 5. 26. 14:49ยทCTF

# Intro.

2025. 03. 29. ํ† ์š”์ผ์— ๊ฐœ์ตœ๋œ 2025 Codegate CTF์— ์ฐธ๊ฐ€ํ–ˆ๋‹ค

์ด ๋Œ€ํšŒ๋Š” ๋‚ด๊ฐ€ ์ž‘๋…„์— ์ฒ˜์Œ์œผ๋กœ ์ฐธ๊ฐ€ํ•ด๋ณธ ์™ธ๋ถ€ CTF์ด๊ณ , ๊ทœ๋ชจ๊ฐ€ ์ปธ๋˜ ๋Œ€ํšŒ๋ผ์„œ ๊ธฐ์–ต์— ๋‚จ๋Š”๋‹ค

๊ทธ๋ž˜์„œ ํ•™์›๋„ ์จฐ๊ณ  ์ž”๋ฅ˜ํ•ด์„œ ํ† ์š”์ผ ๋Œ€ํšŒ์— ์ฐธ๊ฐ€ํ–ˆ๋‹ค

๋Œ€์ถฉ ๋ฌธ์ œ ํ’€์ดํ•˜๊ณ  ํ›„๊ธฐ ์ ๊ฒ ๋‹ค

 

# Result.

์˜ˆ์„  ํƒˆ๋ฝํ–ˆ๋‹ค

์˜ˆ์ƒ์€,,์กฐ๊ธˆ์€ ํ–ˆ์ง€๋งŒ, ์ด๋Ÿด์ค„์€ ๋ชฐ๋ž๋‹ค

์„ฑ์ ์ด ๊ต‰์žฅํžˆ ์ €์กฐํ•˜๋‹ค

4๋ฌธ์ œ ํ’€์–ด์„œ 1250์ . 44๋“ฑ.

์ž‘๋…„ 60๋ช‡๋“ฑ. 

ํ•˜๊ณ  ์‹ถ์€ ๋ง์€ ๋งŽ์ง€๋งŒ, ํ’€์ดํ•  ๋ฌธ์ œ๋„ ๋งŽ์ด ์—†์ง€๋งŒ ํ’€์ด ๋Œ€์ถฉ ๊ธฐ๋ก๋งŒ ํ•ด๋†“๊ณ  ํ›„๊ธฐ๋ฅผ ์ ๊ฒ ๋‹ค (+ ์•ž์œผ๋กœ ๊ณต๋ถ€ ๋ฐฉํ–ฅ์„ฑ)

# Hello Codegate

๊ทธ๋ƒฅ ๊ณต์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์žˆ๋‹ค

ํ”Œ๋ž˜๊ทธ๋Š” ๊ธฐ์–ต์ด ์•ˆ๋‚จ

 

# inital - rev 

๊ทธ๋ƒฅ ๊ณต์ง€์— ๋“ค์–ด๊ฐ€๋ฉด ์žˆ๋‹ค

 

์—„์ฒญ ๋ณต์žกํ•ด๋ณด์ด์ง€ ์•Š๋Š”๋‹ค 

"๋”ธ๊น"

byte_4020 = [
    0x45, 0xB8, 0x1A, 0x80, 0x47, 0xCB, 0xD6, 0x19, 0x1D, 0x58,
    0x56, 0xE2, 0x36, 0xE4, 0x27, 0x65, 0xB1, 0x73, 0xE9, 0x5C,
    0x7E, 0x42, 0x7C, 0xDE, 0x71, 0x61, 0xF6, 0x48, 0xF5, 0x22,
    0x57, 0x1B, 0xAF, 0xDB, 0x8D, 0x8B, 0xC0, 0x2B, 0xD4, 0xA1,
    0xCC, 0xF2, 0xEB, 0xBE, 0x37, 0x38, 0xD9, 0x1E, 0x63, 0xE3,
    0x4D, 0x94, 0x13, 0xBA, 0x9C, 0x86, 0x10, 0x35, 0xFC, 0x4F,
    0xD7, 0xD3, 0x7B, 0x3A, 0xC9, 0x8F, 0xD0, 0x24, 0xF1, 0x05,
    0x2C, 0x53, 0x5E, 0x8C, 0x96, 0x3D, 0xA6, 0xA4, 0x6E, 0xCF,
    0x5B, 0x6D, 0x04, 0xED, 0x12, 0x7A, 0x17, 0x25, 0x34, 0xDC,
    0xAD, 0xE1, 0x20, 0x91, 0x75, 0x06, 0xC4, 0x74, 0x6F, 0x78,
    0x00, 0x6C, 0xC2, 0xAB, 0xA9, 0x9F, 0xB0, 0x16, 0x33, 0x90,
    0xCD, 0xB2, 0x3C, 0xAA, 0x9B, 0x51, 0x4E, 0x3F, 0x1C, 0x50,
    0xFA, 0x18, 0xE8, 0xB4, 0x54, 0xB9, 0x3B, 0x49, 0xF9, 0xB6,
    0x99, 0x9D, 0x7D, 0x0E, 0x66, 0xEF, 0xFF, 0x15, 0x97, 0x55,
    0x0F, 0xF8, 0x21, 0x2E, 0x83, 0xF3, 0x95, 0x0A, 0xA8, 0xBC,
    0x5D, 0xB5, 0x32, 0xFD, 0xF7, 0xD8, 0x26, 0x89, 0x64, 0x2F,
    0xA7, 0xCA, 0x0D, 0xEC, 0xC3, 0xFB, 0xAC, 0xB7, 0x09, 0xEE,
    0x84, 0x92, 0x79, 0x01, 0x07, 0xA2, 0x77, 0x4A, 0x02, 0x60,
    0x39, 0xA0, 0x93, 0xBD, 0x88, 0xC6, 0xE5, 0xE7, 0xCE, 0x23,
    0xBB, 0xDF, 0x85, 0xC1, 0x59, 0xEA, 0xD2, 0x9A, 0xE6, 0x31,
    0x14, 0xFE, 0xC5, 0x44, 0x11, 0x87, 0x67, 0xD1, 0x4B, 0xDA,
    0x6A, 0x52, 0xBF, 0x0B, 0xF4, 0x5A, 0x8A, 0x08, 0x28, 0xA3,
    0x7F, 0x30, 0x70, 0x9E, 0x2D, 0x0C, 0x82, 0xAE, 0x40, 0x68,
    0x43, 0x76, 0xE0, 0x3E, 0x8E, 0x2A, 0x4C, 0xA5, 0xD5, 0x69,
    0x72, 0xC8, 0x81, 0x6B, 0x46, 0xC7, 0xB3, 0x1F, 0x5F, 0x98,
    0x29, 0xF0, 0x62, 0x03, 0xDD, 0x41
]

byte_4120 = [
    0x36, 0xE2, 0x2E, 0x86, 0x6D, 0x24, 0xCD, 0x94, 0x1A, 0x1A,
    0x46, 0x9B, 0x49, 0x83, 0x61, 0x15, 0x20, 0xB2, 0x47, 0xEA,
    0x0D, 0x42, 0xE9, 0x3D, 0xE4, 0x74, 0x1B, 0x16, 0x8B, 0x54,
    0x2E, 0xAA
]

def rotate_left(val, shift, bits=8):
    shift %= bits
    return ((val << shift) | (val >> (bits - shift))) & ((1 << bits) - 1)

# Reverse the sub_11A9 transformation
s_after_xor = []
for j in range(32):
    rot_amount = j & 6
    rotated_val = rotate_left(byte_4120[j], rot_amount)
    try:
        original_byte = byte_4020.index(rotated_val)
        s_after_xor.append(original_byte)
    except ValueError:
        print(f"Error: Could not find {rotated_val} in byte_4020 at j={j}")
        exit()

# Reverse the XOR transformation
xor_sum = 0
for i in range(31):
    xor_sum ^= s_after_xor[i]

original_s0 = s_after_xor[31] ^ xor_sum ^ s_after_xor[0]

original_s = [0] * 32
original_s[0] = original_s0

current_xor = original_s[0]
for i in range(1, 32):
    original_s[i] = current_xor ^ s_after_xor[i - 1]
    current_xor = original_s[i]

# Verify the last XOR
assert (original_s[31] ^ s_after_xor[0]) == s_after_xor[31], "Verification failed"

# Convert to flag
flag = bytes(original_s).decode('latin-1')
print(f"Flag: {flag}")

 

# Encrypted_flag - crypto

๊ฑ ๋ณต๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค

import math
from sympy import nextprime
from Crypto.Util.number import long_to_bytes, inverse

n = 54756668623799501273661800933882720939597900879404357288428999230135977601404008182853528728891571108755011292680747299434740465591780820742049958146587060456010412555357258580332452401727868163734930952912198058084689974208638547280827744839358100210581026805806202017050750775163530268755846782825700533559
e = 65537
c = 7728462678531582833823897705285786444161591728459008932472145620845644046450565339835113761143563943610957661838221298240392904711373063097593852621109599751303613112679036572669474191827826084312984251873831287143585154570193022386338846894677372327190250188401045072251858178782348567776180411588467032159

approx = math.isqrt(n)
while True:
    if n % approx == 0:
        p = approx
        q = n // p
        break
    approx -= 1

phi = (p - 1) * (q - 1)
d = inverse(e, phi)

m = pow(c, d, n)
flag = long_to_bytes(m)
print("Recovered flag:", flag)

 

# ping_tester - web

๊ทธ์ € commend injection

์„œ๋ฒ„ ๋‹ซํ˜€์„œ ๊ธฐ์–ต์€ ์•ˆ๋‚˜๋Š”๋ฐ ls; cat flag๋ญ ์ด๋Ÿฐ์‹์œผ๋กœ ํ–ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค

 

์—ฌ๊ธฐ๊นŒ์ง€ ๋Œ€ํšŒ ๊ธฐ๊ฐ„๋™์•ˆ ํ‘ผ ๋ฌธ์ œ


๋Œ€ํšŒ ์ดํ›„ ์—…์†”๋น™ or ํ’€์ด ๋ฐฉ๋ฒ•์„ ํ™•์‹คํ•˜๊ฒŒ ์•ˆ ๋ฌธ์ œ๋“ฑ๋“ฑ (๋ชปํ‘ผ๊ฑฐ)

 

# Bright - AI

์ด ๋ฌธ์ œ์— 12์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ๋‹ค

์ ์‹ฌ์‹œ๊ฐ„๋ถ€ํ„ฐ ์ด ๋ฌธ์ œ๋ฅผ ๋ณด์•˜๋Š”๋ฐ ๋Œ€์ถฉ ๋ญ˜ ์š”๊ตฌํ•˜๋Š”์ง€ ์•Œ๊ฒƒ ๊ฐ™์•˜๊ณ , ํ’€ ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋‹ค

ํ’€์ด์ž๊ฐ€ 0๋ช…์ด๋ผ์„œ ์ž์‹ ์€ ์—†์—ˆ์ง€๋งŒ, ๋ญ ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ์ž์‹ ์žˆ๋Š”๊ฑด ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ์ด๊ฑฐ ํ’€์—ˆ๋‹ค

 

๋ฐฅ ๋จน๊ณ  ์ข€ ์‰ฌ์—ˆ๋‹ค๊ฐ€ ๋ฌธ์ œ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์ด ์ƒ๊ฒผ๋‹ค

๊ทธ๋ž˜์„œ ์œ ๊ธฐํ• ๊นŒ ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๋ณด๊ธด ํ–ˆ์ง€๋งŒ, ์ฐจ๋ผ๋ฆฌ ์ง€๊ธˆ๊นŒ์ง€ ๋ถ„์„์ด๋ผ๋„ ํ•ด๋†“์€ ์ด๊ฑธ ๋„์ „ํ•˜๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์‹œ๋„ํ–ˆ๋‹ค

์ €๋…์ฏค ๋˜๋‹ˆ PWN 1๋ฒˆ ํ’€์ด์ž๊ฐ€ ๋งŽ์•„์กŒ๊ณ , ๋ฌธ์ œ๋„ ์‰ฌ์šด ๋ฌธ์ œ๋ผ๊ณ  ํŒ๋‹จํ–ˆ์ง€๋งŒ, ์•„์ฃผ ๊ฑฐ๋งŒํ•œ ์ƒ๊ฐ์œผ๋กœ ํ’€์–ด๋„ 250์ ์„ ์ฃผ๋‹ˆ

"๋‚˜๋Š” 1000์ ์„ ํ’€์–ด์„œ ๋ณธ์„  ๊ฐˆ๊ฑฐ์•ผ!๋ผ๋Š” ์•„์ฃผ์•„์ฃผ ๊ฑฐ๋งŒํ•œ ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋ถ„๋ช…ํžˆ ์‹œ๋„ํ–ˆ์œผ๋ฉด ํ’€์—ˆ์„ ์ˆ˜๋„ ์žˆ์—ˆ๊ฒ ์ง€๋งŒ ์•ˆํ’€๊ณ  ์ด ๋ฌธ์ œ๋งŒ ์žก์•˜๋‹ค

์˜คํ›„ 9์‹œ๋ถ€ํ„ฐ๋Š” ๊ทธ๋ƒฅ ๋ชจ์•„๋‹ˆ๋ฉด ๋„ ๋งˆ์ธ๋“œ๋กœ ์ด ๋ฌธ์ œ๋งŒ ํŒ ์ง€๋งŒ, ๊ฒฐ๊ตญ ์‹คํŒจํ–ˆ๋‹ค

๊ธฐ์ˆ™์‚ฌ์— ๋ฐ€๋ฐ˜์ž…ํ•ด์„œ ์ข€ ํ•ด๋ดค๋Š”๋ฐ ์ž์ •๊นŒ์ง€ ๋ชปํ’€์—ˆ๊ณ , ์ด๊ฑฐ ๋ชปํ’€๋ฉด ๋ชป์ž๊ฒ ๋‹ค ์‹ถ์–ด์„œ 2์‹œ๊ฐ„์ •๋„ ๋” ๋ณด๋‹ˆ๊น ๊ฒฐ๊ตญ์—๋Š” ํ’€๋ ธ๋‹ค,,,,,

 

์„œ๋ฒ„๊ฐ€ ๋‹ซํ˜€์„œ ๋กœ์ปฌ์—์„œ ๋„์ปค ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•ด์„œ ์ ‘์†ํ•ด์„œ ํ’€์—ˆ๋‹ค

 

ํ™˜๊ฒฝ ๊ตฌ์ถ• ์™„

 

๋ฌธ์ œ๋ฅผ ๋ดค์„๋•Œ ๋ญ” ์•”ํ˜ธํ™”? ๊ทธ๋Ÿฐ๊ฑธ ์ฃผ๊ณ  ์ธ์ฆ์„ ํ•˜๋ผ๋Š”๊ฒŒ ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๊ฑด ๊ทธ๋ƒฅ gpt ๋Œ๋ ค์„œ ๊ทธ๋ƒฅ ํ’€์—ˆ๋‹ค

 

๋Œ€ํšŒ๋•Œ๋„ ์ ๋Œ€์  ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ž˜ ์•ˆ๋˜์—ˆ๋‹ค

 

๋Œ€ํšŒ ๋๋‚˜๊ณ  ํ•œ์ฐธ๋’ค์— ๋ฌธ์ œ ํŒŒ์ผ ๋„์ปค ๋นŒ๋“œํ•˜๊ณ  ๋ฌธ์ œ ํ’€์–ด๋ดค๋Š”๋ฐ ์ž˜ ํ’€๋ ธ๋‹ค

 

์ •๋ง ํ—ˆ๋ฌดํ•˜๊ฒŒ๋„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ, ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ํ’€์–ด์•ผํ• ์ง€ ์•Œ๊ณ  ํ‘ธ๋‹ˆ๊น ์„œ๋ฒ„ ๊ตฌ์ถ• ์™„๋ฃŒ์™€ ๋™์‹œ์— ํ•œ 40๋ถ„์ •๋„๋งŒ์— ํ’€๋ ธ๋‹ค

 

์•ž์œผ๋กœ๋Š” ์ž๋งŒํ•˜์ง€ ๋ง๊ณ  ํ’€ ์ˆ˜ ์žˆ๋Š”๊ฑด ๊ผญ ํ’€์–ด์•ผ๊ฒ ๋‹ค

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

[ 2025 COSS ์•„์ฃผ๋Œ€ CTF - ๋ณธ์„ ] - Write Up & ํ›„๊ธฐ  (5) 2025.07.25
[2025 COSS ์•„์ฃผ๋Œ€ CTF - ์˜ˆ์„  ] - Write Up & ํ›„๊ธฐ  (0) 2025.06.23
[2025 DIMI CTF Write Up] - Prob by pandas. with ํ›„๊ธฐ  (3) 2025.03.25
[CTF] ์ œ 5ํšŒ ์ค‘๋ถ€๋Œ€ํ•™๊ต JBU CTF  (1) 2025.02.27
[CTF] 2024 ELECCON ์ผ๋ ‰์ฝ˜ ์˜ˆ์„   (0) 2025.02.27
'CTF' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ 2025 COSS ์•„์ฃผ๋Œ€ CTF - ๋ณธ์„ ] - Write Up & ํ›„๊ธฐ
  • [2025 COSS ์•„์ฃผ๋Œ€ CTF - ์˜ˆ์„  ] - Write Up & ํ›„๊ธฐ
  • [2025 DIMI CTF Write Up] - Prob by pandas. with ํ›„๊ธฐ
  • [CTF] ์ œ 5ํšŒ ์ค‘๋ถ€๋Œ€ํ•™๊ต JBU CTF
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)
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

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

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Hello๐Ÿ–๏ธI'm pandas from KDMHS
[2025 Codegate ์˜ˆ์„ ] - Write Up & ํ›„๊ธฐ
์ƒ๋‹จ์œผ๋กœ

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