Jastes 2022. 11. 19. 13:26

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์„ ํ•œ ์ƒํƒœ๋กœ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

01
UPX์— ๊ฐ„๋‹จ ์„ค๋ช…(๋„ˆ๋ฌด ๊ธธ์–ด์„œ ์ž˜๋ž์–ด์š”)

์ €๋Ÿฐ ๊ธฐ๋Šฅ์˜ ํˆด์ด๋ฉฐ, ๋ช…๋ น์–ด๋ฅผ ์–ด๋Š์ •๋„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค

์ด๋Ÿฐ์‹์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €ํฌ๋Š” unpacking์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ decompress์œผ๋กœ์จ ๊ทธ๋ƒฅ upx -d ./flag๋กœ ํ•ฉ์‹œ๋‹ค

๊ทธ๋Ÿผ ํ•œ๋ฒˆ ๋ถ„์„ํ•ด๋ด…์‹œ๋‹ค.

13์—์„œ puts๋กœ "I will malloc() and strcpy๋กœ flag๋ฅผ ๋‹ด์•˜๋‹ค..๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์ž๋ฉด..

์œ„์™€ ๊ฐ™์ด ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

flag๋ผ๊ณ  ๋ณด์ด๋Š” ๋ถ€๋ถ„์— rip+0x2c0ee5์ด๋ฉฐ, rip๋Š” ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ธฐ์—
0x40118b+0x2c0ee5 = 0x6C2070 ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•œ๋‹ค๋ฉด..

๋ฐ‘์— ์ €๋Ÿฐ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๋ฉฐ ์ € ๋ถ€๋ถ„์ด flag๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

 

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