๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Buffer Overflow) ์ทจ์•ฝ์ 

๊ฐœ์š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฆ‰ ํ”„๋กœ๊ทธ๋žจ์ด ๋ณ€์ˆ˜์˜ ํ• ๋‹น๋œ ๊ณต๊ฐ„์— ์ €์žฅ๋  ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(๋ฒ„ํผ)๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ์ œํ•œํ•˜์ง€ ์•Š๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ ์ฃผ์†Œ ๋ผ ๋ถˆ๋ฆฌ๋Š” Return Address(RET)์— ๋ฎ์–ด ์”Œ์›Œ์ ธ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์ค‘์ง€๋˜๊ฑฐ๋‚˜ RET ๊ฐ’์— ๊ณต๊ฒฉ์ฝ”๋“œ๋ฅผ ์˜๋„์ ์œผ๋กœ ์‚ฝ์ž…๋˜๊ฒŒ ํ•˜์—ฌ ๊ณต๊ฒฉ์ž๊ฐ€ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค. ์Šคํƒ(Stack), ํž™(Heap) ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์— BOF ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  Linux ํ™˜๊ฒฝ์—์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณผ ๊ฒƒ์ด๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Stack : ํ›„์ž…์„ ์ถœ ์ธ Last In First Out ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋“ฑ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ Heap : ๋™์ ํ• ๋‹น ์‹œ ์‚ฌ์šฉ D..

WEB