return gadget 2

[Return Oriented Programming]

์‚ฌ์šฉ ๋ฐฐ๊ฒฝ๊ณผ ๋ชฉ์  system ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ด ์…ธ์„ ํš๋“ํ•˜๊ณ ์ž system ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์•Œ๊ณ ์‹ถ์€๋ฐ,ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด ํ•จ์ˆ˜๊ฐ€ ํ™œ์šฉ๋˜์ง€ ์•Š๊ณ , ์‹ฌ์ง€์–ด ASLR ๊ธฐ๋ฒ•์ด ์ ์šฉ๋ผ ์žˆ๋Š” ๋ฐ”๋žŒ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ, ํž™, ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์˜ ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€๋‹ค๋ฉด,์šฐ๋ฆฌ๋Š” ์ข€๋” ๋จผ๊ธธ์„ ๋Œ์•„ ์ฃผ์†Œ๋ฅผ ์–ป์–ด์•ผ ํ•œ๋‹ค.: ํ”„๋กœ์„ธ์Šค์—์„œ libc๊ฐ€ ๋งคํ•‘๋œ ์ฃผ์†Œ๋ฅผ ์ฐพ์€ ๋’ค,์ด ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ system ํ•จ์ˆ˜๊นŒ์ง€์˜ offset์„ ๊ตฌํ•ด์„œ,์ตœ์ข…์ ์œผ๋กœ system ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์–ป๊ธฐ libc.so.6 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” system ํ•จ์ˆ˜ ๋ฟ ์•„๋‹ˆ๋ผ ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” read, puts, printf๋„ ์ •์˜๋˜์–ด ์žˆ๋Š”๋ฐ,๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋งคํ•‘๋  ๋•Œ ์ „์ฒด๊ฐ€ ๋งคํ•‘๋˜๋ฏ€๋กœ, read, puts, printf ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ system ํ•จ์ˆ˜๋„ ..

[Return to Library]

์ด๋ก   ์‚ฌ์šฉ ๋ฐฐ๊ฒฝ๊ณผ ๋ชฉ์   NX๋ฅผ ์šฐํšŒํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ด RTL์˜ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.   NX๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ:์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ (eg. ์Šคํƒ ์˜์—ญ)์— ์“ฐ๊ธฐ ๊ถŒํ•œ๊ณผ ์‹คํ–‰ ๊ถŒํ•œ์ด ํ•จ๊ป˜ ์žˆ์Œ -> ์…ธ์ฝ”๋“œ ์ฃผ์ž…ํ•˜์—ฌ Return address๋ฅผ ๋ฎ์–ด ์‹คํ–‰ ํ๋ฆ„ ์กฐ์ž‘ ๊ฐ€๋ŠฅNX๊ฐ€ ์ ์šฉ๋œ ๊ฒฝ์šฐ:์‹คํ–‰๋  ๋•Œ ๊ฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ์„ ๋ถ€์—ฌ๋ฐ›์Œ-> ์ผ๋ฐ˜์ ์œผ๋กœ ์…ธ์ฝ”๋“œ๊ฐ€ ์ฃผ์ž…๋˜์—ˆ๋˜ ์œ„์น˜์ธ ์Šคํƒ ์˜์—ญ์ด ์ด์   ์‹คํ–‰ ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ, ์œ„ ๋ฐฉ๋ฒ•์ด ๋ถˆ๊ฐ€ํ•ด์ง๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ฃผ์ž…ํ•œ ์…ธ์ฝ”๋“œ๋‚˜, ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ด์   ํ™œ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋์œผ๋‹ˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์„ ์ฐพ์•„๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.   ์›๋ฆฌ  ๋ฆฌํ„ด ๊ฐ€์ ฏ์„ ํ™œ์šฉํ•˜์—ฌ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด NX๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!  ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ์˜ ์‹คํ–‰ ํ๋ฆ„์„..