๐Ÿ“š์บก์Šคํ†ค ๋””์ž์ธ1 <CodeEngn Basic RCE L09>

Loopy ยท2022๋…„ 5์›” 22์ผ
0

๐Ÿ”Ž์บก์Šคํ†ค ๋””์ž์ธ1

๋ชฉ๋ก ๋ณด๊ธฐ
13/19

๐Ÿ”ฅ๋ชฉํ‘œ: ์ฝ”๋“œ์—”์ง„ ๋ฒ ์ด์ง L09 ๋ฌธ์ œ๐Ÿ”ฅ

Basic RCE L09: StolenByte๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.

๋ฌธ์ œ ๋‹ค์šด๋กœ๋“œ -> zip ์••์ถ• ํ•ด์ œ
๋น„๋ฐ€๋ฒˆํ˜ธ: codeengn

ํŒŒ์ผ ์‹คํ–‰ ํ›„ -> ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ฐฝ์ด ๋œฌ๋‹ค.

์ƒํ™ฉ: StolenByte ๊ตฌํ•˜๊ธฐ

๊ทธ๋Ÿผ StolenByte๋Š” ๋ฌด์—‡์ผ๊นŒ?

->StolenByte: ํŒจํ‚น๋œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ OEP๋กœ ์ ํ”„ํ•˜๊ธฐ ์ „ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

ํŒจํ‚น์„ ํ‘ธ๋Š” ๊ณผ์ •์—์„œ, OEP๋ฅผ ์ฐพ์•„ ๋คํ”„๋ฅผ ๋œจ๋Š”๋ฐ, StolenByte๊ฐ€ ์ ์šฉ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์ •์ƒ ์‹คํ–‰์„ ๋ง‰์•„์„œ ์–ธํŒจํ‚น์„ ๋ฐฉํ•ดํ•œ๋‹ค.

์ด๋ฒˆ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ, StolenByte๋ฅผ ์ฐพ๋Š” ๊ตฌ๊ธ€๋ง ๊ณผ์ •์—์„œ
ํŒจํ‚น, ์–ธํŒจํ‚น ํŒŒ์ผ์˜ ์ฐจ์ด์ ์€ ํŒŒ์ผ ์‹คํ–‰ ์‹œ "์—๋Ÿฌ ์ฐฝ์ด ๊นจ์ง€๋Š”์ง€ ์—ฌ๋ถ€์˜ ์ฐจ์ด ์ธ ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

์•„๋ž˜ ์‚ฌ์ง„์€ UPX ์–ธํŒจํ‚น ๋ฐฉ๋ฒ•์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์–ธํŒจํ‚น์„ ํ•ด๋ณด์ž.

์–ธํŒจํ‚น ํ•œ ๋‹ค์Œ, ํŒŒ์ผ ์‹คํ–‰ ํ›„ -> ๊ธ€์ž๊ฐ€ ๊นจ์ง„๋‹ค.

x32dbg๋กœ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด nop๊ฐ€ ๋ณด์ธ๋‹ค.
์ด ๋ถ€๋ถ„์€ ์ •์ƒ์ ์ด์ง€ ์•Š์€ ๊ฐ’์œผ๋กœ ์ฑ„์›Œ์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
๋ฉ”์‹œ์ง€ ๋ฐ•์Šค์˜ ๊ธ€์ž๊ฐ€ ๊นจ์ง„๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ OEP๊ฐ€ 0040100์ธ ๊ฒƒ์€ ์•Œ์•˜์ง€๋งŒ, ๊ทธ ๋‹ค์Œ ์ง„ํ–‰ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์ฐพ์•„๋ดค๋”๋‹ˆ ์–ธํŒจํ‚น ์ „๊ณผ ๋น„๊ตํ•ด์•ผํ•œ๋‹ค.

์–ธํŒจํ‚น ์ „์—๋Š” "popad"๊ฐ€ ์žˆ๋‹ค.

->Popad: Pushad๋กœ ์ €์žฅํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ณต์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

StolenByte๋Š” OEP ์ฃผ์†Œ๋กœ jmp ์ „์— push๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
6A 00
68 00204000 ๋ถ€๋ถ„์—์„œ ์ฝ”๋“œ๋“ค์ด ์–ธํŒจํ‚นํ•˜๋ฉด์„œ ์‚ฌ๋ผ์กŒ๋‹ค.

๋”ฐ๋ผ์„œ, ์ •๋‹ต์€ 6A0068002040006812204000

----------References

profile
์ •๋ณด๋ณดํ˜ธํ•™๊ณผ ๋Œ€ํ•™์ƒ ๐Ÿ˜Š

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