Dreamhack - bof

์œคยท2025๋…„ 10์›” 7์ผ
1

Dreamhack-Writeups

๋ชฉ๋ก ๋ณด๊ธฐ
44/44

bof

๋ฌธ์ œ ๋งํฌ

https://dreamhack.io/wargame/challenges/1111

๋ฌธ์ œ ์„ค๋ช…

Buffer overflowย is one of the basics of pwnable ๐Ÿฑ

The path of the flag file isย /home/bof/flag.

  • The path of the flag file isย /home/bof/flag.

ํ’€์ด๊ณผ์ •

  1. VM์— ์ ‘์†ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

meow? ๋ž€ ๊ธ€์ด ๋– ์„œ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅ์„ ํ•˜์˜€๋”๋‹ˆโ€ฆ ์ €๋Ÿฐ ๊ท€์—ฌ์šด ๊ทธ๋ฆผ์ด ๋œจ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ธ€์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฌธ์ œ ํŒŒ์ผ์„ ํ™•์ธํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. dof ๋ž€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ์กด์žฌํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด๋ฅผ IDA๋ผ๋Š” ๋””์Šค์–ด์…ˆ๋ธ” ํˆด๋กœ ์—ด์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด ์ƒํƒœ์—์„œ๋Š” ๋ณด๊ธฐ ์–ด๋ ค์šฐ๋‹ˆ, ๋””์ปดํŒŒ์ผ ๊ณผ์ •์„ ํ†ตํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ .์šฐ๋ฆฌ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ธ‰์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. ์œ„์˜ ํ™”๋ฉด์—์„œ F5๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

C์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ค‘์š” ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

char v4[128]; // ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ›์„ ๋ฒ„ํผ
char v5[16];  // "./cat" ๋ฌธ์ž์—ด ์ €์žฅ ๋ฒ„ํผ
  • v4 : ํฌ๊ธฐ 128์งœ๋ฆฌ ๋ฌธ์ž์—ด ๋ฐฐ์—ด (์ž…๋ ฅ ๋ฐ›์„ ๊ณณ)
  • v5 : ํฌ๊ธฐ 16์งœ๋ฆฌ ๋ฌธ์ž์—ด ๋ฐฐ์—ด (ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—์„œ ์“ธ ๋ช…๋ น ์ €์žฅ)
printf("meow? ");
__isoc99_scanf("%144s", v4);
  • "meow? " ์ถœ๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ v4์— ์ €์žฅ.
  • %144s ํฌ๋งท์€ ์ตœ๋Œ€ 144๊ธ€์ž ๋ฌธ์ž์—ด์„ ์ฝ๋Š”๋‹ค๋Š” ์˜๋ฏธ. โ‡’ v4์˜ ๋ฐฐ์—ดํฌ๊ธฐ๋Š” 128์ธ๋ฐ ์ตœ๋Œ€ 144๋ฐ”์ดํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค > ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ!]
    • ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ž€? : ํ”„๋กœ๊ทธ๋žจ์ด ์ •ํ•ด์ง„ ๋ฒ„ํผ(๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„)๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ์— ์จ์„œ ๋ฒ„ํผ ๋’ค์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฎ์–ด๋ฒ„๋ฆฌ๋Š” ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.
    • ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ์ ํ”„ํ•˜๊ฒŒ ๋˜๊ณ , ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์˜์˜ ๋™์ž‘์„ ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๋ฌธ์ œ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 128byte๋ณด๋‹ค ๊ธด ์ž…๋ ฅ์„ ๋„ฃ์œผ๋ฉด ์Šคํƒ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์–ด ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค! ์‹ฌ์ง€์–ด v4 ๋‹ค์Œ์˜ v5์—์„œ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—์„œ ์“ธ ๋ช…๋ น์„ ์ €์žฅํ•˜๊ณ  ์žˆ๊ธฐ์— ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰, 144๊ธ€์ž๊นŒ์ง€ ๋ฌธ์ž์—ด์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” v4 ์—, 128byte๋Š” ์•„๋ฌด ๊ฐ’์œผ๋กœ ์ฑ„์šฐ๊ณ , ์ถ”๊ฐ€๋กœ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ์ธ /home/bof/flag๋ฅผ ์ž…๋ ฅํ•˜์—ฌ v5๋ฅผ ๋ฎ์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  1. ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„์—์„œ vm์— ์ ‘์†ํ•ด์ฃผ๊ณ , ์•ž์˜ 128๊ธ€์ž๋Š” ์ž„์˜์˜ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์„, ๋’ค์˜ 16๊ธ€์ž๋Š” /home/bof/flag ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ํ”Œ๋ž˜๊ทธ๊ฐ’์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


๋ฐฐ์šด์ 

  • IDA๋ฅผ ํ†ตํ•ด ๋””์Šค์–ด์…ˆ๋ธ”๊ณผ ๋””์ปดํŒŒ์ผ ํ•˜๋Š” ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ํŒŒ์ผ๋„ ๋””์Šค์–ด์…ˆ๋ธ”๊ณผ ๋””์ปดํŒŒ์ผ ๊ณผ์ •์„ ํ†ตํ•ด ๊ณ ๊ธ‰์–ธ์–ด๋กœ์„œ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•จ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
  • ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ž…๋ ฅ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์ •ํ™•ํžˆ ์ œ์‹œํ•ด์•ผ ํ•จ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

Summary (English)

  • Connected to the VM and saw the prompt meow?; the program echoed the user input back.
  • Found the challenge binary dof and opened it in IDA; used the decompiler (F5) to view C-like code.
  • Key code: char v4[128]; char v5[16]; printf("meow? "); __isoc99_scanf("%144s", v4); โ€” v4 is 128 bytes but scanf allows 144 bytes, enabling a stack buffer overflow.
  • Because v5 (16 bytes) is placed after v4 on the stack and holds the command string, overflowing v4 can overwrite v5.
  • Exploit method: send 128 bytes of filler followed by the path /home/bof/flag to overwrite v5; the program then uses that overwritten command/path and prints the flag.
  • Verified the exploit in the VM terminal and successfully retrieved the flag.
  • Lessons learned: enforce input length checks (use fgets or correct width specifiers), cross-check decompiled code with assembly, inspect stack layout with a debugger for accurate offsets, and perform exploitation only in authorized CTF/VM environments.
profile
CTF ํ’€์ด ๋ฐ ์‹ค์Šต ์ค‘์‹ฌ ํ•™์Šต์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€