[๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 3] ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” flag๋ฅผ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ํ›”์น˜๋‹ค โ€” DreamHack Check Function Argument ํ’€์ด

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

[๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 3] ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” flag๋ฅผ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ํ›”์น˜๋‹ค โ€” DreamHack Check Function Argument ํ’€์ด

main์ด ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ flag ๋ฌธ์ž์—ด ์ฃผ์†Œ๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒจ ํ˜ธ์ถœํ•˜์ง€๋งŒ, ๊ทธ ํ•จ์ˆ˜๋Š” flag๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ flag๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํ‰๋ฌธ์œผ๋กœ ์—†๊ณ  ์ƒ์„ฑ์ž๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์กฐ๋ฆฝํ•œ๋‹ค. x86-64 ํ˜ธ์ถœ ๊ทœ์•ฝ์ƒ ์ฒซ ์ธ์ž๋Š” rdi์ด๋ฏ€๋กœ, ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ง€์ ์— GDB ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๊ฑธ๊ณ  rdi๋ฅผ ์ฝ์–ด flag๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€๋กœ์ฑ˜๋‹ค.

๋ฌธ์ œ: DreamHack โ€” Check Function Argument ๋ถ„๋ฅ˜: Reversing ๋‚œ์ด๋„: ๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 3 FLAG: DH{63db030352ca9f9f5e6b8a59c0527bee}

๋ฌธ์ œ ์„ค๋ช…์ด ํ’€์ด ๋ฐฉ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์•Œ๋ ค์ค€๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹ด๊ธด ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋™์  ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ํ•จ์ˆ˜์˜ ์ธ์ž๋ฅผ ํ™•์ธํ•˜์—ฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ํš๋“ํ•˜์„ธ์š”!

์ •๋ฆฌํ•˜๋ฉด, flag๋Š” ์–ด๋–ค ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋งŒ ์กด์žฌํ•˜๊ณ  ํ™”๋ฉด์—” ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ๋ถˆ๋ฆฌ๋Š” ์ˆœ๊ฐ„์„ GDB๋กœ ๋ถ™์žก์•„ ์ธ์ž๋ฅผ ์ฝ์œผ๋ฉด ๋œ๋‹ค. ํ•จ์ˆ˜ ์ธ์ž๋ฅผ ์ฝ๋Š” ์—ฐ์Šต์šฉ ๋ฌธ์ œ๋‹ค.

Check Function Argument โ€” ํ•จ์ˆ˜์˜ ์ฒซ ์ธ์ž(rdi)๋ฅผ GDB๋กœ ํ›”์ณ๋ณธ๋‹ค
Check Function Argument โ€” ํ•จ์ˆ˜์˜ ์ฒซ ์ธ์ž(rdi)๋ฅผ GDB๋กœ ํ›”์ณ๋ณธ๋‹ค

๋ฌธ์ œ ๊ฐœ์š”

ํ•ญ๋ชฉ๋‚ด์šฉ
๋ฌธ์ œ๋ช…Check Function Argument
๋‚œ์ด๋„๐Ÿฅ‰ ๋ธŒ๋ก ์ฆˆ 3
๋ถ„๋ฅ˜Reversing (x86-64 ELF)
์ œ๊ณต ํŒŒ์ผcheck_function_argument (stripped, non-PIE)
๋ชฉํ‘œํ•จ์ˆ˜์— ๋„˜์–ด๊ฐ€๋Š” flag ์ธ์ž๋ฅผ ๋™์ ์œผ๋กœ ํ™•์ธ
ํ•ต์‹ฌ ๊ธฐ๋ฒ•ํ˜ธ์ถœ ๊ทœ์•ฝ(rdi = 1๋ฒˆ์งธ ์ธ์ž) + GDB ๋™์  ๋””๋ฒ„๊น…

์ •์  ๋ถ„์„์œผ๋กœ "์–ด๋А ํ•จ์ˆ˜๊ฐ€ flag๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š”์ง€"๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ง€์ ์—์„œ GDB๋กœ ์ธ์ž๋ฅผ ์ฝ๋Š” ๋‘ ๋‹จ๊ณ„๋‹ค.



๋ฐฐ๊ฒฝ โ€” x86-64 ํ˜ธ์ถœ ๊ทœ์•ฝ๊ณผ ๋™์  ๋””๋ฒ„๊น…

๋ฆฌ๋ˆ…์Šค x86-64(System V AMD64 ABI)์—์„œ ํ•จ์ˆ˜์— ์ธ์ž๋ฅผ ๋„˜๊ธธ ๋• ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์“ด๋‹ค.

  • ์ •์ˆ˜/ํฌ์ธํ„ฐ ์ธ์ž๋Š” ์ˆœ์„œ๋Œ€๋กœ rdi, rsi, rdx, rcx, r8, r9 ์— ๋‹ด๊ธด๋‹ค.
  • ๊ทธ๋Ÿฌ๋‹ˆ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ์–ธ์ œ๋‚˜ rdi ๋‹ค. ํ•จ์ˆ˜๋ฅผ call ํ•˜๊ธฐ ์ง์ „(๋˜๋Š” ํ•จ์ˆ˜ ์ง„์ž… ์งํ›„)์— rdi๋ฅผ ์ฝ์œผ๋ฉด ๊ทธ ํ•จ์ˆ˜์˜ ์ฒซ ์ธ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” flag๋ฅผ ์–ด๋–ค ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„˜๊ธฐ๊ธฐ๋งŒ ํ•˜๊ณ  ์ถœ๋ ฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ •์ ์œผ๋กœ ์†Œ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋ก  ๊ฐ’์„ ๋ชป ๋ณธ๋‹ค. ๋Œ€์‹  ๋™์  ๋””๋ฒ„๊น…์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹ค์ œ๋กœ ๋Œ๋ฆฌ๋‹ค๊ฐ€ ๊ทธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ˆœ๊ฐ„์— ๋ฉˆ์ถฐ rdi๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด flag๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ํ†ต์งธ๋กœ ๋“ค์–ด ์žˆ๋‹ค. ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” non-PIE๋ผ ํ•จ์ˆ˜ ์ฃผ์†Œ๊ฐ€ ๊ณ ์ •(0x4015e2)์ด์–ด์„œ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ๊ฑธ๊ธฐ๋„ ์‰ฝ๋‹ค.


๐Ÿ”ฌ ์ •์ฐฐ โ€” ์‹คํ–‰ํ•ด๋„ flag๋Š” ์•ˆ ๋‚˜์˜จ๋‹ค

file๋กœ ๋ณด๋ฉด stripped, non-PIE ์‹คํ–‰ ํŒŒ์ผ์ด๋‹ค. ๋ฌธ์ž์—ด์—” ํžŒํŠธ๋งŒ ์žˆ๋‹ค.

file check_function_argument
strings check_function_argument | grep -E "flag|Flag|argument|see that"
file/strings โ€” stripped non-PIE, ๋ฌธ์ž์—ด์—” "takes the flag as an argument :)"์™€ "Can you see that?" ํžŒํŠธ๋งŒ
file/strings โ€” stripped non-PIE, ๋ฌธ์ž์—ด์—” "takes the flag as an argument :)"์™€ "Can you see that?" ํžŒํŠธ๋งŒ

"Below function takes the flag as an argument :)", "Can you see that?" โ€” ์ •ํ™•ํžˆ ๋ฌธ์ œ ์„ค๋ช…๋Œ€๋กœ๋‹ค. ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ด ๋‘ ์ค„๋งŒ ์ฐ๊ณ  ๋๋‚œ๋‹ค.

์ •์ƒ ์‹คํ–‰ โ€” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ๋‘ ์ค„๋งŒ ์ถœ๋ ฅ๋˜๊ณ  flag๋Š” ์–ด๋””์—๋„ ์—†๋‹ค
์ •์ƒ ์‹คํ–‰ โ€” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€ ๋‘ ์ค„๋งŒ ์ถœ๋ ฅ๋˜๊ณ  flag๋Š” ์–ด๋””์—๋„ ์—†๋‹ค

flag๋Š” ํ™”๋ฉด์— ์—†๋‹ค. ๊ทธ๋Ÿผ ์–ด๋”” ์žˆ๋‚˜? ์ •์  ๋ถ„์„์œผ๋กœ flag๊ฐ€ ์–ด๋””๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š”์ง€ ๋”ฐ๋ผ๊ฐ€ ๋ณธ๋‹ค.


๐Ÿงญ ์ •์  ๋ถ„์„ โ€” flag๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜ ์ฐพ๊ธฐ

main์„ ๋””์Šค์–ด์…ˆ๋ธ”ํ•˜๋ฉด ํ๋ฆ„์ด ์งง๊ณ  ๋ช…ํ™•ํ•˜๋‹ค.

puts("...takes the flag as an argument :)")
rdi = [0x4040d0]          ; ์ „์—ญ์— ์ €์žฅ๋œ flag ๋ฌธ์ž์—ด ์ฃผ์†Œ
call 0x4015e2             ; ์ด ํ•จ์ˆ˜๊ฐ€ flag๋ฅผ ์ธ์ž(rdi)๋กœ ๋ฐ›๋Š”๋‹ค
puts("Can you see that?")
main ๋””์Šค์–ด์…ˆ๋ธ” โ€” ์ „์—ญ [0x4040d0]์˜ flag ์ฃผ์†Œ๋ฅผ rdi์— ์‹ฃ๊ณ  0x4015e2 ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
main ๋””์Šค์–ด์…ˆ๋ธ” โ€” ์ „์—ญ [0x4040d0]์˜ flag ์ฃผ์†Œ๋ฅผ rdi์— ์‹ฃ๊ณ  0x4015e2 ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ

main์€ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฐ์€ ๋’ค, ์ „์—ญ ๋ณ€์ˆ˜ 0x4040d0์— ๋‹ด๊ธด ํฌ์ธํ„ฐ๋ฅผ rdi์— ์‹ฃ๊ณ  0x4015e2 ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ด rdi๊ฐ€ ๋ฐ”๋กœ flag ์ฃผ์†Œ๋‹ค. ๊ทธ ํ•จ์ˆ˜๋Š” flag๋ฅผ ๋ฐ›์•„ ๋ฌด์–ธ๊ฐ€ ํ•˜์ง€๋งŒ ์ถœ๋ ฅ์€ ์•ˆ ํ•œ๋‹ค.

โ–ถ ์‚ฝ์งˆ: strings๋กœ flag๋ฅผ ์ฐพ์œผ๋ ค๋‹ค ํ—ˆํƒ•, flag๋Š” ๋Ÿฐํƒ€์ž„์— ์กฐ๋ฆฝ๋œ๋‹ค

์ฒ˜์Œ์—” ์Šต๊ด€์ ์œผ๋กœ strings | grep DH{๋กœ flag๋ฅผ ์ฐพ์œผ๋ ค ํ–ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” 0๊ฑด. flag๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํ‰๋ฌธ์œผ๋กœ ๋ฐ•ํ˜€ ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค.

strings์— DH ๋ฌธ์ž์—ด์ด ์—†๊ณ , .init_array์— ์ƒ์„ฑ์ž ๋‘ ๊ฐœ๊ฐ€ ๋“ฑ๋ก๋ผ ์žˆ์Œ
strings์— DH ๋ฌธ์ž์—ด์ด ์—†๊ณ , .init_array์— ์ƒ์„ฑ์ž ๋‘ ๊ฐœ๊ฐ€ ๋“ฑ๋ก๋ผ ์žˆ์Œ

์ด์œ ๋Š” .init_array์— ์žˆ์—ˆ๋‹ค. ์ƒ์„ฑ์ž(main๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๋Š” ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜)๊ฐ€ ๋‘ ๊ฐœ ๋“ฑ๋ก๋ผ ์žˆ๊ณ , ์ด๋“ค์ด ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ž„๋ฒ ๋“œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ XOR(๋ฐ˜๋ณต ํ‚ค)ยท๋ง์…ˆ์œผ๋กœ ๋ณ€ํ™˜ํ•ด flag ๋ฌธ์ž์—ด์„ ๋Ÿฐํƒ€์ž„์— ์กฐ๋ฆฝํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ •์ ์œผ๋กœ ํŒŒ์ผ์„ ๋’ค์ ธ์„  flag๊ฐ€ ์•ˆ ๋ณด์ด๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•ด ์กฐ๋ฆฝ์ด ๋๋‚œ ๋’ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ด์•ผ ํ•œ๋‹ค. ๊ฒฐ๊ตญ ๋™์  ๋””๋ฒ„๊น…์ด ์ •๋‹ต์ด๋ผ๋Š” ๊ฑธ ์ด ์‚ฝ์งˆ๋กœ ํ™•์ธํ•œ ์…ˆ์ด๋‹ค.


๐Ÿ’ฃ ํ•ต์‹ฌ โ€” GDB๋กœ ์ธ์ž ์ฝ๊ธฐ

0x4015e2 ํ˜ธ์ถœ ์‹œ์ ์˜ rdi๊ฐ€ flag ์ฃผ์†Œ๋‹ค. non-PIE๋ผ ์ฃผ์†Œ๊ฐ€ ๊ณ ์ •์ด๋‹ˆ ๊ทธ ํ•จ์ˆ˜์— ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๊ฑธ๊ณ  rdi๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ๋Š”๋‹ค.

# solve.gdb
break *0x4015e2
run
printf "๋‚ด์šฉ: %s\n", (char*)$rdi
GDB โ€” 0x4015e2์— ๋ธŒ๋ ˆ์ดํฌ ํ›„ rdi๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ์œผ๋‹ˆ ooh you figured out me ์™€ ํ•จ๊ป˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜ด
GDB โ€” 0x4015e2์— ๋ธŒ๋ ˆ์ดํฌ ํ›„ rdi๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ์œผ๋‹ˆ ooh you figured out me ์™€ ํ•จ๊ป˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‚˜์˜ด

๋ธŒ๋ ˆ์ดํฌ์— ๊ฑธ๋ฆฐ ์ˆœ๊ฐ„ rdi๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋ฉด flag๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.

ooh you figured out me :) Flag is DH{63db030352ca9f9f5e6b8a59c0527bee}

"ooh you figured out me :)" โ€” ํ•จ์ˆ˜ ์ธ์ž๋กœ๋งŒ ์ˆจ๊ฒจ ๋’€๋˜ flag๊ฐ€ ๊ฑธ๋ ค๋“ ๋‹ค.


๐Ÿš€ Full Exploit

ํ•œ ์ค„์งœ๋ฆฌ GDB ๋ฐฐ์น˜๋กœ ๋๋‚œ๋‹ค.

gdb -q -batch \
  -ex 'break *0x4015e2' \
  -ex 'run' \
  -ex 'printf "%s\n", (char*)$rdi' \
  ./check_function_argument

0x4015e2๋Š” main์ด flag ์ฃผ์†Œ๋ฅผ rdi์— ๋„ฃ๊ณ  ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋‹ค. ๊ทธ ์ง€์ ์—์„œ rdi๋ฅผ ์ฝ์œผ๋ฉด ์กฐ๋ฆฝ์ด ๋๋‚œ flag ๋ฌธ์ž์—ด์ด ๋‚˜์˜จ๋‹ค.

ooh you figured out me :) Flag is DH{63db030352ca9f9f5e6b8a59c0527bee}


๐Ÿ“ ๊ฒฐ๋ก 

ํ™”๋ฉด์— ์•ˆ ๋‚˜์˜ค๋Š” ๊ฐ’๋„ ํ•จ์ˆ˜ ์ธ์ž์—์„œ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์š”์ ์€ "์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณผ ๊ฒƒ์ธ๊ฐ€"์˜€๋‹ค. ๋‹ต์€ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์น˜๋Š” ์ง€์  โ€” ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ์ธ์ž ๋ ˆ์ง€์Šคํ„ฐ โ€” ๋ฅผ ์žก๋Š” ๊ฒƒ์ด๋‹ค. x86-64์—์„œ ์ฒซ ์ธ์ž๋Š” rdi์ด๋ฏ€๋กœ, ํ˜ธ์ถœ ์ง์ „/์งํ›„์— rdi๋งŒ ์ฝ์œผ๋ฉด ๋œ๋‹ค. ์ด๋Š” ์‹ค์ „ ๋ฆฌ๋ฒ„์‹ฑ์—์„œ ๋ณตํ˜ธํ™” ๋ฃจํ‹ด์— ๋„˜์–ด๊ฐ€๋Š” ํ‰๋ฌธ, ๋„คํŠธ์›Œํฌ๋กœ ๋‚˜๊ฐ€๊ธฐ ์ง์ „์˜ ๋ฐ์ดํ„ฐ, ๋กœ๊ทธ์— ์•ˆ ์ฐํžˆ๋Š” ๋น„๋ฐ€๊ฐ’ ๋“ฑ์„ ๊ด€์ฐฐํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ์ˆ ์ด๋‹ค.

์ •์  ๋ถ„์„๊ณผ ๋™์  ๋ถ„์„์€ ์—ญํ• ์ด ๋‹ค๋ฅด๋‹ค.

strings๋กœ flag๋ฅผ ๋ชป ์ฐพ์€ ๊ฑด flag๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์กฐ๋ฆฝ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ์ •์  ๋ถ„์„์€ "์–ด๋””๋ฅผ ๋ด์•ผ ํ•˜๋Š”์ง€"(์–ด๋А ํ•จ์ˆ˜๊ฐ€ flag๋ฅผ ๋ฐ›๋Š”์ง€)๋ฅผ ์•Œ๋ ค์ฃผ๊ณ , ๋™์  ๋ถ„์„์€ "๊ทธ ์ˆœ๊ฐ„ ์‹ค์ œ ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€"๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋‘˜์„ ํ•จ๊ป˜ ์จ์•ผ ํ•œ๋‹ค โ€” ์ •์ ์œผ๋กœ ๋ชฉํ‘œ ์ง€์ ์„ ์ฐพ๊ณ , ๋™์ ์œผ๋กœ ๊ทธ ์ง€์ ์˜ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ํ๋ฆ„์ด ์ด ๋ฌธ์ œ์˜ ์ •์„ ํ’€์ด๋‹ค.

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

Comments

๋Œ“๊ธ€

0๊ฐœ

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

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

Related

๊ด€๋ จ ๊ธ€

3๊ฐœ
[๐Ÿฅ‡ Gold 1] ํ•จ์ˆ˜ 125๊ฐœ์งœ๋ฆฌ 4์ง„ ํŠธ๋ผ์ด๋ฅผ ๋˜๊ฐ๋‹ค โ€” DreamHack Function Network ํ’€์ด
blog

[๐Ÿฅ‡ Gold 1] ํ•จ์ˆ˜ 125๊ฐœ์งœ๋ฆฌ 4์ง„ ํŠธ๋ผ์ด๋ฅผ ๋˜๊ฐ๋‹ค โ€” DreamHack Function Network ํ’€์ด

stripped ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ 64๋ฐ”์ดํŠธ ์ž…๋ ฅ์„ 10000๋ฒˆ ๋ณ€ํ˜•ํ•ด ๊ณ ์ •๋œ ๋ชฉํ‘œ๊ฐ’๊ณผ ๋น„๊ตํ•œ๋‹ค. ๋ณ€ํ˜•์˜ ์ข…๋ฅ˜๋Š” .data ์— ๋ฐ•ํžŒ 64๋น„ํŠธ key ๊ฐ€ ์ •ํ•˜๋Š”๋ฐ, ๊ทธ key ๋Š” ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋””์ŠคํŒจ์ฒ˜ 125๊ฐœ๋กœ ์งœ์ธ 4์ง„ ํŠธ๋ผ์ด๋ฅผ 2๋น„ํŠธ์”ฉ 32๋ฒˆ ํƒ€๊ณ  ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒฝ๋กœ์˜€๋‹ค. ๋„์ฐฉ์ง€์ธ ๋ฆฌํ”„ 4๊ฐœ๊ฐ€ ์ „๋ถ€ ์ „๋‹จ์‚ฌ๋ผ ๋ชฉํ‘œ๊ฐ’์—์„œ 10000์Šคํ…์„ ๊ฑฐ๊พธ๋กœ ๊ฐ์œผ๋ฉด ์ž…๋ ฅ์ด ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.
#dreamhack#ctf#reversing+6
2026-08-16#dreamhack +4
[๐Ÿฅ‰ Bronze 4] ๊ฐ€์งœ ํ•จ์ˆ˜ 199๊ฐœ ์†์—์„œ flag ์ฐพ๊ธฐ โ€” DreamHack please, please, please ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 4] ๊ฐ€์งœ ํ•จ์ˆ˜ 199๊ฐœ ์†์—์„œ flag ์ฐพ๊ธฐ โ€” DreamHack please, please, please ํ’€์ด

stripped PIE ๋ฐ”์ด๋„ˆ๋ฆฌ ์•ˆ์— ๊ฑฐ์˜ ๋™์ผํ•œ ํ•จ์ˆ˜๊ฐ€ 199๊ฐœ ๋ฐ•ํ˜€ ์žˆ๋‹ค. ์ „๋ถ€ "please~"๋งŒ ์ถœ๋ ฅํ•˜๋Š” ์ฃฝ์€ ์ฝ”๋“œ๊ณ , ์‹ค์ œ main๋„ puts ํ•œ ์ค„๋งŒ ๋ถ€๋ฅด๊ณ  ๋๋‚œ๋‹ค. objdump๋กœ 199๊ฐœ ์ค‘ ์œ ์ผํ•˜๊ฒŒ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„๋‚ด๋ฉด "Hhu,"๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฏธ๋ผ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ์ •์ž‘ flag๋Š” strings ํ•œ ๋ฒˆ์ด๋ฉด ๋ฐ”๋กœ ๋ณด์ด๋Š” DH{NOGADA}์˜€๋‹ค.
#dreamhack#ctf#reversing+5
2026-07-19#dreamhack +4
[๐Ÿฅ‰ Bronze 4] ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋ฒ„๋ฆฐ ๋ฐ˜ํ™˜๊ฐ’์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‚š์•„์ฑ„๋‹ค โ€” DreamHack Check Return Value ํ’€์ด
blog

[๐Ÿฅ‰ Bronze 4] ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋ฒ„๋ฆฐ ๋ฐ˜ํ™˜๊ฐ’์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‚š์•„์ฑ„๋‹ค โ€” DreamHack Check Return Value ํ’€์ด

main์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฒ„ํผ์— ์กฐ๋ฆฝํ•ด ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ๊ทธ ๋ฐ˜ํ™˜๊ฐ’์„ ์“ฐ์ง€ ์•Š๊ณ  ๊ณง๋ฐ”๋กœ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ฎ์–ด์จ ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š” ๋ฆฌ๋ฒ„์‹ฑ ๋ฌธ์ œ. ๋ฐ˜ํ™˜๊ฐ’์„ ๋ฎ์–ด์“ฐ๊ธฐ ์ง์ „ ์ง€์ ์— gdb ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ๊ฑธ๊ณ  $rax๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ์œผ๋ฉด ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.
#dreamhack#ctf#reversing+3
2026-07-13#dreamhack +4