Description

Spear of Destiny.

Writeup

[0x0] Prerequisite

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๊ฒƒ๋“ค

<aside> ๐Ÿ’ก ๋‚œ์ด๋„: Hard

</aside>

xi์˜ ๊ณก Longinus, ๋” ์ž์„ธํžˆ๋Š” ์ด๋ฅผ ์†Œ์žฌ๋กœ ํ•œ osu! ๋น„ํŠธ๋งต์˜ Spare of Destiny ๋‚œ์ด๋„๋ฅผ ๋ชจํ‹ฐ๋ธŒ๋กœ ํ•œ ๋ฌธ์ œ์ด๋‹ค.

[0x1] Abstract

์ฃผ์–ด์ง„ ํŒŒ์ผ์€ spearshooter, longinus.txt ์ด๋‹ค. spearshooter๋Š” ELF ์‹คํ–‰ ํŒŒ์ผ์ด๊ณ  ๋™์‹œ์— ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค. longinus.txt๋Š” Ascii Art ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” spearshooter ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ์ด๋‹ค. (โ€ฆ)

๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” flex๋กœ Lexical Analysis๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด๋ฅผ ํ† ๋Œ€๋กœ VM Instruction์„ ๋ณตํ˜ธํ™”ํ•œ๋‹ค. ์ด๋•Œ Instruction์„ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋””๋ฒ„๊น…์„ ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ Anti-Debugging ํ…Œํฌ๋‹‰์ด ์กด์žฌํ•˜๊ณ  ์–ด์งœํ”ผ ๋‚˜์ค‘์— Input์„ ํ† ๋Œ€๋กœ sbox๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๋ถ€๋ถ„์ด ๋˜ flex๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์  ๋ถ„์„์œผ๋กœ ์™„๋ฒฝํžˆ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์ œ์˜ ์ถœ์ œ ์˜๋„๋Š” ์ ์ ˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฌธ์ œ ๋ถ„์„์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๊ณ , ์ •๋ณด๋ฅผ ํ† ๋Œ€๋กœ ์•”ํ˜ธํ™”๋œ ์ •๋ณด๋ฅผ ์—ญ์—ฐ์‚ฐํ•˜์—ฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์–ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

[0x2] Detail

ํ”„๋กœ๊ทธ๋žจ์„ ์—ด๋ฉด ํฌ๊ฒŒ ํŒŒ์ผ์„ ์—ฌ๋Š” ๋ถ€๋ถ„, ํ•จ์ˆ˜๋ฅผ ๋Œ€์ž…ํ•˜๋Š” ๋ถ€๋ถ„, ์•„๋งˆ๋„ longinus.txt ์˜ ํŒŒ์ผ์„ ์ฝ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค.