[Toddle] flag
fd_WriteUp
๋ณด์๋ฉด.. ํํ(์๋น ?)๊ฐ ์ ๋ฌผ์ ๋ณด์ฅํด์ ๊ฐ์ ธ์์ด์! ์ด์ด๋ณผ๊น์? ๋ผ๊ณ ํฉ๋๋ค.
๋ฐ์ ์ด๊ฒ์ ์์
์ ๋๋๋ฆฌ๋ ๊ฑฐ๊ณ ๋๊ฐ ํ์ํ๊ฑด ์ด์ง์๋ผ๊ณ ํฉ๋๋ค...
ํ์ผ์ ๋ฐ์์ ์ด์ด๋ณด๋๊น..
๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ๊ทธ๋ฅ ์ด๋ฉด ๋ง ๊นจ์ ธ์ ๋์ค๊ฒ ์ฃ ๊ทธ๋ผ ์ด๊ฑธ ๋ณต์ํด๋ด
์๋ค.
์ด๊ฑด ๊ทธ๋ผ.. ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ์ด๊ฒ ๊ตฐ์(์ ๋ชปํ๋๋ฐ ใ
)
์ผ๋จ hex๋ก ๋ฐ๋ก ํ์ธํด๋ด ์๋ค.
ELF(๋ฆฌ๋
์ค ์คํ)์ด ๋๊ฐ๊ฐ ์ค๋ณต๋๋ฉฐ ๋ฐ์ UPX!๋ผ๊ณ ํ๋๊ฒ ์กด์ฌํฉ๋๋ค.
๊ทธ๋ผ ์์ถ์ด ๋์๊ตฌ๋.. ๋ผ๊ณ ๋๋์ด ์ค๋๊ตฐ์ ๊ทธ๋ผ UPX๊ฐ ๋ฌด์์ธ์ง ์์๋ณผ๊น์?
UPX(Ultimate Packer for eXecutables)๋ก์จ
์ฌ๋ฌ OS์์ ์๋ง์ ํ์ผ ํฌ๋งท์ ์ง์ํ๋ ์คํ ์์ค ์คํ ํ์ผ ์์ถ ํ๋ก๊ทธ๋จ์
๋๋ค.
GitHub - upx/upx: UPX - the Ultimate Packer for eXecutables
UPX - the Ultimate Packer for eXecutables. Contribute to upx/upx development by creating an account on GitHub.
github.com
๊ทธ๋์ link๋ header์ ์น์
์ด ๋ชป ์ฐพ๊ฒ ๋ค๊ณ ํ๋๊ตฐ์..
๊ทธ๋ผ upx๊ฐ packingํ๊ธฐ์ unpacking์ ํ ์ํ๋ก ๋ถ์ํ ํ์๊ฐ ์์ต๋๋ค.
์ ๋ฐ ๊ธฐ๋ฅ์ ํด์ด๋ฉฐ, ๋ช
๋ น์ด๋ฅผ ์ด๋์ ๋ ์๋ ค์ค๋๋ค
์ด๋ฐ์์ผ๋ก ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํฌ๋ unpacking์ ํด์ผํ๋ฏ๋ก decompress์ผ๋ก์จ ๊ทธ๋ฅ upx -d ./flag๋ก ํฉ์๋ค
๊ทธ๋ผ ํ๋ฒ ๋ถ์ํด๋ด ์๋ค.
13์์ puts๋ก "I will malloc() and strcpy๋ก flag๋ฅผ ๋ด์๋ค..๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ผ ์์ฌ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํ์๋ฉด..
์์ ๊ฐ์ด ์ถ์ธกํ ์ ์์ต๋๋ค.
flag๋ผ๊ณ ๋ณด์ด๋ ๋ถ๋ถ์ rip+0x2c0ee5์ด๋ฉฐ, rip๋ ๋ค์ ์ฃผ์๋ฅผ ๊ฐ๋ฅดํค๊ธฐ์
0x40118b+0x2c0ee5 = 0x6C2070 ์
๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํด๋น ์ฃผ์๋ฅผ ํ์ธํ๋ค๋ฉด..
๋ฐ์ ์ ๋ฐ ๋ฌธ๊ตฌ๊ฐ ๋์ค๋ฉฐ ์ ๋ถ๋ถ์ด flag๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง