๐ฅ๋ชฉํ: ์ฝ๋์์ง ๋ฒ ์ด์ง 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