Jastes 2022. 7. 28. 20:37

Basic RCE L01 - Write Up

01.7z
0.00MB

๋น„๋ฒˆ : codeengn

๋กœ์จ HD๊ฐ€ CD-Rom์— ์ ‘๊ทผ์ด ๋˜์–ด์•ผ๋งŒ ์‹คํ–‰์ด ๋œ๋‹ค๊ณ ....
์ฆ‰, ์ธ์ž๋กœ CD-Rom์œผ๋กœ ์ ‘๊ทผ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ด์„œ ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด ๊ตฌ๋ถ„์ด ๋˜์–ด ์žˆ๋„ค์š”

๊ทธ๋Ÿผ ์ฝ”๋“œ๋ฅผ x32dbg๋กœ ํ•ด์„œ ํ•ด๋ณผ๊ป˜์š” ์‹คํ–‰์„ ์‹œ์ผœ์„œ ๋ถ„์„์„ ํ•ด๋ณด๋ฉด..

์œ„์™€ ๊ฐ™์ด ๋œน๋‹ˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋น„๊ต๋ฅผ ํ•ด๋ณผ๊นŒ์š”?


๋ณด์‹œ๋ฉด 0040100C๊นŒ์ง€๋Š” ํ”„๋กค๋กœ๊ทธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์‹œํ•˜์…”๋„ ํฐ ์ƒ๊ด€์€ ์—†์„ ๋“ฏ ์‹ถ๋„ค์š”
๊ทธ๋ฆฌ๊ณ  push 01.402094๊นŒ์ง€์˜ ๋‚ด์šฉ๋„ ํฐ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ํŒ์„ ์ค€๋‹ค๋ฉด..

 call <JMP.&MessageBoxA> : ์‹œ์Šคํ…œ ์•„์ด์ฝ˜, ์ผ๋ จ์˜ ๋‹จ์ถ”, ์ƒํƒœ ๋˜๋Š” ์˜ค๋ฅ˜ ์ •๋ณด์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋ณ„ ๋ฉ”์‹œ์ง€๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋‹ฌ ๋Œ€ํ™” ์ƒ์ž๋ฅผ ํ‘œ์‹œ ํ•œ๋งˆ๋””๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‹ฌ์ฐฝ์œผ๋กœ ํ‘œ์‹œํ•ด์คŒ

 push 01.402094 : EntryPoint๋กœ ์ด๋™ํ•˜๋„ค์š” ์ฆ‰, ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.. ๋ผ๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ• ๋“ฏ;;
 

MessageBoxA function (winuser.h) - Win32 apps

Displays a modal dialog box that contains a system icon, a set of buttons, and a brief application-specific message, such as status or error information. The message box returns an integer value that indicates which button the user clicked. (MessageBoxA)

docs.microsoft.com

์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ call <JMP.&GetDriveTypeA>๋กœ ์ธ์ž๋ฅผ ๋ฐ›์•„์™€์„œ ํ™•์ธ์„ ํ•œ๋‹ค๋ฉด..
ํ˜ธ์ถœ์„ ํ•˜๋Š”๋ฐ.. ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ esi์— ์ €์žฅ๋˜๊ฒ ์ฃ  ๊ตฌ๊ธ€ํ•ด๋ณด๋‹ˆ๊นŒ..

๋กœ์จ ์šฐ๋ฆฌ๋Š” CD-ROM์— ์ ‘๊ทผ ๋˜์–ด ์žˆ์œผ๋ฉด ์ฐธ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ ๊ฒฐ๊ณผ๋Š”
5๋กœ ๋ฐ˜ํ™˜ ๋˜์•ผํ•˜๋ฏ€๋กœ ๋‹ต์€ ๋‚˜์™”์ง€๋งŒ ๋” ๋ถ„์„ํ•ด๋ด…์‹œ๋‹ค..

 

GetDriveTypeA function (fileapi.h) - Win32 apps

Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. (ANSI)

docs.microsoft.com


IDA๋กœ ์„ค๋ช…ํ•˜์ฃ  x32dbg ๋ณ„๋กœ๋ผ์„œ.. ๊ทธ๋ž˜๋„ ์œ„์— ๋ณด์—ฌ์ค„๊ป˜์š”

์ „์ฒด์ ์ธ ๋กœ์ง์€ ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์„ค๋ช…ํ•ด๋ณด๋ฉด..
esi๋Š” 3 ์ฆ๊ฐ€, eax(GetDriveTypeA์˜ ๊ฐ’) 2๊ฐ์†Œ์˜ jz ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ํ†ตํ•ด ๊ฐ™์•„์•ผ๋งŒ ์ฐธ์ด ๋˜๋„ค์š”

๊ทธ๋Ÿผ ์ฆ‰, GetDriveTypeA์˜ ๊ฐ’(eax) - 2 = 3์ด ๋˜์•ผํ•˜๋ฏ€๋กœ 5๊ฐ€ ๋˜์•ผํ•œ๋‹ค..๋ผ๋Š” ๊ฒฐ๋ก 

๊ฒฐ๋ก ์˜ ํ•ต์‹ฌ์ธ jz ์–ด์…ˆ์˜ ๋””๋ฒ„๊น… ๊ฒฐ๊ณผ๋งŒ ๋ณด๊ณ  ๋๋ƒ…์‹œ๋‹ค ใ…Ž

์•„.. ์—ฌ๊ธฐ๋Š” x32dbg๋ผ cmp์ธ๋ฐ jz๋ž‘ ๋˜‘๊ฐ™์€ ๋ง์ด์˜ˆ์š”

๊ฒฐ๋ก  : 5


์ฐธ๊ณ  ์ž๋ฃŒ

 

CodeEngn.com [์ฝ”๋“œ์—”์ง„]

์ฝ”๋“œ์—”์ง„์€ ๊ตญ๋‚ด ๋ฆฌ๋ฒ„์Šค์—”์ง€๋‹ˆ์–ด๋ง ์ •๋ณด๊ณต์œ ๋ฅผ ์œ„ํ•ด 2007๋…„ ๋ถ€ํ„ฐ ๋ฆฌ๋ฒ„์Šค์—”์ง€๋‹ˆ์–ด๋ง ์ปจํผ๋Ÿฐ์Šค ๋ฐ ์„ธ๋ฏธ๋‚˜, ์›Œํฌ์ˆ์„ ํ˜„์—… ์‹ค๋ฌด์ž๋“ค๊ณผ ํ•จ๊ป˜ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ๋น„์˜๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์ž…๋‹ˆ๋‹ค.

ch.codeengn.com

์ฐธ๊ณ  ์ด๋ฏธ์ง€