๋ฌธ์ ๋ ์ฝ๋์์ง ์ฌ์ดํธ์์ ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค. (์์ถํด์ ์ ๋น๋ฐ๋ฒํธ๋ codeengn ์ ๋๋ค.)
๋ชฉํ๊ฐ : OEP + Stolenbyte
์คํ ํด ๋ด ์๋ค.
ํค ํ์ผ์ ์ฐพ์ผ๋ผ๋ ๋ฉ์ธ์ง ๋ฐ์ค๊ฐ ๋จ๊ณ , ํ์ธ์ ๋๋ฅด๋ฉด ํค ํ์ผ ์ ๋ฌด๋ฅผ ํ์ธํ๊ณ ๋ถ๊ธฐํ๋ ํ๋ก๊ทธ๋จ ์ ๋๋ค.
์ฝ๋์์ง 9๋ฒ๊ณผ ๋์ผํ ํ๋ก๊ทธ๋จ์ด๋ค์.
๋ฌธ์ ์์ ์ํ๋ ๊ฐ์ธ OEP ์ Stolenbyte ๋ง ์ฐพ๊ณ ํฌ๋ ๊ณผ์ ์ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค.
PEid๋ก UPX ํจํน์ด ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
๋๋ฒ๊ฑฐ๋ก ์ด์ด๋ด ์๋ค. (x32dbg ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.)
PUSHAD ๊ฐ ์์ผ๋ POPAD ๋ฅผ ์ฐพ์๊ฐ์ผ๊ฒ ์ฃ ?
[Ctrl + F] ํค๋ก POPAD ๋ช ๋ น์ ๊ฒ์ํ ๋ค, ํด๋น ์ฃผ์๋ก ์ด๋ํด์ค๋๋ค.
์ด๋ ๊ฒ POPAD ๋ช ๋ น๊ณผ OEP๋ก์ JMP ์ BP ๋ฅผ ๊ฑธ์ด์ค๋๋ค.
ํ์ฌ OEP ๋ 0040100C ๊ฐ ๋๊ฒ ์ฃ ? (์ถํ์ Stolenbyte ๊ฐ ์ถ๊ฐ๋์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.)
[F9] ํค๋ฅผ ๋ ๋ฒ, [F8] ํค๋ฅผ ํ ๋ฒ ๋๋ฌ ๋ณตํธํ ํ ๋ค OEP ๋ก ๊ฐ ์ค๋๋ค.
OEP ์์ nop ๋ช ๋ น์ด๊ฐ 12๊ฐ๋ก 12 byte ์ ์๋ฆฌ๊ฐ ๋จ์ต๋๋ค.
๊ทธ ๋ฐ์์๋ 0 ํ๋๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉฐ ๋ฉ์ธ์ง๋ฐ์ค๋ฅผ ํธ์ถํ๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
9๋ฒ ๋ฌธ์ ํ์ด์์ ์ค๋ช ํ๋ฏ, ๋ฉ์ธ์ง๋ฐ์ค ํจ์์ ์ธ์๋ ์ด 4๊ฐ ์ ๋๋ค.
ํจ์ปค๊ฐ Stolenbyte ๋ก ์ธ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ช ๋ น์ ์ฎ๊ฒผ๋ ๋ด ๋๋ค.
๋ค์ POPAD ์ JMP ์ฌ์ด๋ก ์์ ํ์ธํด๋ด ์๋ค.
ํ๋์ ๋ฐ์ค์์ ์ธ ๊ฐ์ ๊ฐ์ด PUSH ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค. (์ด 12 byte ์ ๋๋ค.)
์ด๋ค์ด ๋ฉ์ธ์ง๋ฐ์ค ํจ์๋ก ์ ๋ฌ๋ ๋๋จธ์ง ์ธ ๊ฐ์ ์ธ์์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Stolenbyte ๋ ๋ถ์์ ๋ฐ์ค ์์ 6A0068002040006812204000 ๊ฐ ๋๊ฒ ๋ค์.
์ธ ์ธ์ ์ ๋ฌ ๋ช ๋ น (Stolenbyte) ์ ์์ผ๋ก ์ฎ๊ฒจ ์ ๋ด ์๋ค.
์ ์ OEP ์์ nop ๋ช ๋ น์ ๋ชจ๋ 12 byte ์๊ณ , Stolenbyte ๋ํ 12 byte ๋ก ํฌ๊ธฐ๊ฐ ๋์ผํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก 00401000 ์ฃผ์๋ถํฐ PUSH ๋ช ๋ น์ด๊ฐ ํ๋์ฉ ๋ค์ด๊ฐ์ผ ๊ฒ ๋ค์.
์ฐจ๋ก๋๋ก PUSH ๋ช ๋ น์ผ๋ก ์์ ํด์ค ๋ค ์ด์ ๋ธ ํด ์ค๋๋ค.
ํฌ๊ธฐ๊ฐ ๋ฑ ๋ง์ ๋จ์ด์ง๋๋ค.
์ฐ๋ฆฌ๊ฐ ํจ์ปค์ ์ํด ์ฎ๊ฒจ์ ธ ์๋ Stolenbyte ๋ฅผ ํจํน์ ํ๊ณ ์์ผ๋ก ์ฎ๊ฒจ์์ผ๋, OEP ๊ฐ 0040100C ์์ 00401000 ์ฃผ์๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ฐ๋ผ์ OEP + Stolenbyte ๋ 004010006A0068002040006812204000 ์ ๋๋ค.
OEP + Stolenbyte = 004010006A0068002040006812204000
'reverse engineering > CodeEngn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CodeEngn] Basic RCE L13 ๋ฌธ์ ํ์ด (2) | 2020.12.13 |
---|---|
[CodeEngn] Basic RCE L12 ๋ฌธ์ ํ์ด (0) | 2020.12.12 |
[CodeEngn] Basic RCE L10 ๋ฌธ์ ํ์ด (0) | 2020.12.11 |
[CodeEngn] Basic RCE L09 ๋ฌธ์ ํ์ด (0) | 2020.12.09 |
[CodeEngn] Basic RCE L08 ๋ฌธ์ ํ์ด (0) | 2020.12.08 |