Hack The Planet

๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค, cyalume์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

reverse engineering/CodeEngn

[CodeEngn] Basic RCE L18 ๋ฌธ์ œํ’€์ด

cyalume 2020. 12. 26. 19:30

์ฝ”๋“œ์—”์ง„ ์‚ฌ์ดํŠธ

 

๋ชฉํ‘œ๊ฐ’ : Name์ด CodeEngn์ผ ๋•Œ Serial๊ฐ’

 

์‹คํ–‰์„ ์‹œ์ผœ๋ด…๋‹ˆ๋‹ค.

 

 

์ž…๋ ฅํ•œ ์ด๋ฆ„์ด ์ผ๋ จ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฑฐ์ณ์„œ ์‹œ๋ฆฌ์–ผ์ด ์ƒ์„ฑ๋˜๊ณ , ์ด์™€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋น„๊ตํ•˜๋Š” ์ต์ˆ™ํ•œ ์œ ํ˜•์˜ ํ”„๋กœ๊ทธ๋žจ ์ž…๋‹ˆ๋‹ค.

๋””๋ฒ„๊ฑฐ๋กœ ์—ด์–ด๋ณผ๊นŒ์š”?

 

 

๋ณ„๋‹ค๋ฅธ ํŒจํ‚น์€ ๋˜์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์‹œ๋ฆฌ์–ผ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ„๊ธฐ์ ์„ ๋จผ์ € ์ฐพ์•„์•ผ๊ฒ ์ฃ ?

์ƒ๋‹จ๋ฐ”์˜ Az ์•„์ด์ฝ˜์œผ๋กœ ์‹คํŒจ์‹œ ์ถœ๋ ฅ๋˜๋Š” Bad ๋ฉ”์„ธ์ง€๋ฐ•์Šค์˜ ์ฃผ์†Œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฐ”๋กœ ์•„๋ž˜์— ์„ฑ๊ณต ์‹œ ์ถœ๋ ฅ๋  ๋ฌธ์ž์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์‹คํŒจ ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋˜๋Š” ์ฃผ์†Œ์˜ ์œ„์— ๋ถ„๊ธฐ์ ์ด ์žˆ๊ณ , ๊ทธ ์กฐ๊ฑด๋ถ„๊ธฐ๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด ์„ฑ๊ณตํ•  ๊ฒ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์œ„์˜ 004011F6 ์ฃผ์†Œ๊ฐ€ ๋ถ„๊ธฐ์ ์ž…๋‹ˆ๋‹ค.

or eax, eax ์‹์˜ ๊ฐ’์ด 0์ด๋ผ๋ฉด (ZF = 0์ด 1์ด ๋œ๋‹ค๋ฉด) ์„ฑ๊ณต ๋ฉ”์„ธ์ง€๋ฐ•์Šค๋ฅผ ๋„์šฐ๋Š” ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•˜๋„ค์š”.

 

OR ์—ฐ์‚ฐ?

๋”๋ณด๊ธฐ

๋‘ ๊ฐ’์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฐธ(1)์ด๋ฉด ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’๋„ ์ฐธ(1)

1 OR 1 = 1

1 OR 0 = 1

0 OR 0 = 0

 

3 OR 7 = 7

(=0011 OR 0111 -> 0111)

 

๊ฐ„๋‹จํ•˜๊ฒŒ or ์—ฐ์‚ฐ์˜ ํŠน์ง•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

or eax, eax ์˜ ๊ฐ’์ด 0์ด ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” eax = 0 ์ด ๋˜์–ด์•ผ ํ•˜๋„ค์š”.

eax๊ฐ€ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹ด๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ๋– ์˜ฌ๋ ค ๋ณด์„ธ์š”.

๋ฐ”๋กœ ์œ„์—์„œ ํ˜ธ์ถœ๋œ lstrcmpiA ํ•จ์ˆ˜๋ฅผ ๊ด€์ฐฐํ•ด์•ผ ํ•˜๊ฒ ์ฃ ?

 

lstrcmpiA ํ•จ์ˆ˜?

๋”๋ณด๊ธฐ

๋‘ ๋ฌธ์ž์—ด์„ ์ธ์ž๋กœ ๋ฐ›์•„ ๋น„๊ตํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์‚ดํŽด๋ณผ๊นŒ์š”?

ํŽธ์˜์ƒ ๋‘ ์ธ์ž๋ฅผ str1, str2๋กœ ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

str1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด str2์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด๋ณด๋‹ค ํด ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ ๊ฐ’์€ ์–‘์ˆ˜์ž…๋‹ˆ๋‹ค.

str1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด str2์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด๊ณผ ๋™์ผํ•  ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.

str1์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด str2์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ ๊ฐ’์€ ์Œ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

str1-str2์˜ ๋Š๋‚Œ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค.

 

์ด ํ•จ์ˆ˜์— ๋‘ ๋ฌธ์ž์—ด์ด ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๊ณ , ๋น„๊ตํ•œ ๊ฒฐ๊ณผ ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์•„์•ผ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

lstrcmpiA ํ˜ธ์ถœ ๋ถ€๋ถ„์— BP๋ฅผ ๊ฑธ๊ณ  ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•œ ๋’ค ํ•จ์ˆ˜์˜ ์ธ์ž๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์˜ค๋ฅธ ์ชฝ์˜ ์ฃผ์„ ์ฐฝ์ด ๋ณด์ด์‹œ๋‚˜์š”?

์ œ๊ฐ€ ์ž…๋ ฅํ•œ ์‹œ๋ฆฌ์–ผ ๊ฐ’๊ณผ ๋ชจ๋ฅด๋Š” ๊ฐ’์ด ๋น„๊ต๋˜๋„ค์š”.

์ด ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•˜๊ฒŒ ๋˜๋‹ˆ, 4080F0์˜ ๋ฌธ์ž์—ด์€ CodeEngn ์ด๋ผ๋Š” ์ด๋ฆ„์— ๋งž๊ฒŒ ์ƒ์„ฑ๋œ ์‹œ๋ฆฌ์–ผ์ผ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ CodeEngn์ด๋ผ๋Š” ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ๋„ฃ์–ด ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๋ฆฌ์–ผ ๊ฐ’์€ 06162370056B6AC0 ์ž…๋‹ˆ๋‹ค.

 

Name์ด CodeEngn์ผ ๋•Œ Serial ๊ฐ’ = 06162370056B6AC0