rosieblue
article thumbnail
728x90

๐Ÿ”ROP ์‹œ๋ฆฌ์ฆˆ๐Ÿ”

[ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ <-์—ฌ๊ธฐ!

[ROP ์‹œ๋ฆฌ์ฆˆ (2)] PLT, GOT

[ROP ์‹œ๋ฆฌ์ฆˆ (3)] Return to Library ๊ฐœ๋… ๋ฐ ์‹ค์Šต

[ROP ์‹œ๋ฆฌ์ฆˆ (4)] ๋“œ๋ฆผํ•ต(Dreamhack) - rop

 

ROP(Return Oriented Programming) ์‹œ๋ฆฌ์ฆˆ ์ฒซ ์‹œ์ž‘์ด๋‹ค!

์˜ค๋Š˜์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐœ๋…๊ณผ PLT์™€ GOT์— ๋Œ€ํ•˜์—ฌ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.
 


 

๐Ÿ“š ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Library) 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ง๊ทธ๋Œ€๋กœ ๋„์„œ๊ด€์ด๋‹ค. ์ฆ‰, ์ปดํ“จํ„ฐ ์„ธ๊ณ„์˜ ๋„์„œ๊ด€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„์„œ๊ด€์—๋Š” ๋ฌผ๋ก  ์†Œ์„ค๋„ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ์–ด๋–ค ๊ฒƒ์— ๋Œ€ํ•œ ์ „๋ฌธ์ ์ธ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฑ…์ด ๋งŽ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๋ž˜์„œ ๋„์„œ๊ด€์˜ ์ฑ…์˜ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ•จ์ˆ˜๋“ค์˜ ์ •์˜ (ex: printf, scanf, strlen ...์˜ ์ •์˜) ๋ฅผ ๋ชจ์•„๋‘” ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ฆ‰ ์šฐ๋ฆฌ๋Š” ๋„์„œ๊ด€์—์„œ ์ฑ…์„ ๋นŒ๋ฆด๊ฑด๋ฐ, ์ฑ… ์ด๋ฆ„์€ printf์ด๊ณ  ์ฑ… ๋‚ด์šฉ์€ printf์˜ ์ •์˜์ธ ๊ฒƒ์ด๋‹ค. 
์šฐ๋ฆฌ๋Š” printf๋ฅผ ์ง์ ‘ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ํ•ญ์ƒ printf๋ฅผ ์ž˜ ์‚ฌ์šฉํ–ˆ๋‹ค! ์ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
C๋ฅผ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ์ปดํŒŒ์ผ ์–ธ์–ด๋“ค์€, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค์˜ ์ •์˜๋ฅผ ๋ชจ์•„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ฆ‰ ์–ธ์–ด๋งˆ๋‹ค ๋„์„œ๊ด€์ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค!
 
 
(๋”๋Ÿฌ์›€ ์ฃผ์˜)
์˜ˆ๋ฅผ๋“ค์–ด ๋ฟก์น˜๊ฐ€ ๋ฟก๋ฟก์ด์กฑ ๋„์„œ๊ด€์— ๊ฐ€์„œ '๋ฐฉ๊ท€์˜ ์ดํ•ด'์ด๋ผ๋Š” ์ฑ…์„ ๋นŒ๋ ค์„œ ๋ฐฉ๊ท€๋ฅผ ๊ผˆ๋‹ค๊ณ  ํ•ด๋ณด์ž! ์ด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด '๋ฟก์น˜'๋ผ๋Š” 'ํ”„๋กœ๊ทธ๋žจ'์ด '๋ฟก๋ฟก์ด'๋ผ๋Š” '์–ธ์–ด'์˜ '๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'์— ๊ฐ€์„œ '๋ฐฉ๊ท€'๋ผ๋Š” 'ํ•จ์ˆ˜์˜ ์ •์˜'๋ฅผ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋‹ค! 
 
์ด์ฒ˜๋Ÿผ ๊ฐ ์–ธ์–ด์—์„œ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋“ค์„ ๋ชจ์•„์„œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์˜ˆ๋ฅผ๋“ค์–ด C์˜ ํ‘œ์ค€์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” libc์ด๋‹ค. ๋ฆฌ๋ˆ…์Šค์—๋„ libc๊ฐ€ ์žˆ๋Š”๋ฐ, /lib/x86_64-linux-gnu/libc-2.27.so ์—ฌ๊ธฐ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋œ๋‹ค.
 

๋ฆฌ๋ˆ…์Šค์— ์ด๋Ÿฐ์‹์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๊ณ , ์ด ํŒŒ์ผ์— ์š”๋Ÿฐ์‹์œผ๋กœ printf๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌํŒŒ์ผ์— ์ž˜ ์ •์˜๊ฐ€ ๋˜์–ด์žˆ๋‹น

[Computer Science/System] - [System] ์ปดํŒŒ์ผ ๊ณผ์ •์˜ ๋งํฌ(Link)์™€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(Object File) <- ์ด ๊ธ€์—์„œ ๋งํฌ์™€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ๋‚˜ ๋‹ค๋ค˜์—ˆ๋‹ค. ์ด ๊ธ€์— ์˜ํ•˜๋ฉด, ์ปดํŒŒ์ผ์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๊พธ๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ์–˜๊ธฐํ•˜๋Š”๋ฐ, ์ปดํŒŒ์ผ ๊ณผ์ • ๋‚ด์—์„œ๋Š” '๋งํฌ'๋ž€ ๊ฒƒ๋„ ์žˆ์—ˆ๋‹ค. ์ด๋•Œ ๋งํฌ๋Š” ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(๋งํฌ๋˜๊ธฐ ์ „์˜ ๊ธฐ๊ณ„์–ด ํŒŒ์ผ)๋“ค์„ ๋ชจ์•„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑฐ๋ผ๊ณ  ํ–ˆ๋‹ค. A๋ผ๋Š” ํŒŒ์ผ์—์„œ printf๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ printf๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ด๋ž‘ A๋ž‘ ํ•ฉ์ณ์ฃผ๋ฉด ๋งํ‚น์ด ๋˜์–ด์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
 
์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ˜•์‹์ž„์—๋„ ์‹คํ–‰์ด ์•ˆ๋˜๋Š” ์ด์œ ๋Š”, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋“ค์˜ ์ •์˜๊ฐ€ ์–ด๋””์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

puts ์ด๋ฆ„์€ ์žˆ์–ด๋„ ์–˜๊นŒ ๋ญ”์ง€๋Š” ๋ชจ๋ฅด๋Š” ๋ถˆ์Œํ•œ ์˜ค๋ธŒ์ ํŠธํŒŒ์ผ..

๋งํฌ๋ฅผ ๊ฑฐ์น˜๊ณ  ๋‚˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์—์„œ puts๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, puts์˜ ์ •์˜๊ฐ€ ์žˆ๋Š” libc์—์„œ puts์˜ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. (์ฐธ๊ณ ๋กœ libc๋Š” ๋”ฐ๋กœ ์ปดํŒŒ์ผ ํ•  ํ•„์š” ์—†๋‹ค. gcc๊ฐ€ ์•Œ์•„์„œ ๋‹คํ•ด์ค€๋‹ค!!
 
์ด์ œ ์šฐ๋ฆฌ๋Š” ๋งํฌ์˜ ๊ฐœ๋…์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์‹œ ์“ธ ์ˆ˜ ์žˆ๋‹ค!
์ •์ ๋งํฌ๋Š” ๋„์„œ๊ด€์— ๊ฐ€์„œ ์ฑ… ๋‚ด์šฉ์„ ๋‹ค ์•”๊ธฐํ•˜์—ฌ ๋จธ๋ฆฌ์†์— ์šฐ๊ฒจ๋„ฃ๋Š” ๊ฒƒ์ด๊ณ , ๋™์  ๋งํฌ๋Š” ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋„์„œ๊ด€์—์„œ ์ฑ…์„ ๋นŒ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค!! [Computer Science/System] - [System] ์ปดํŒŒ์ผ ๊ณผ์ •์˜ ๋งํฌ(Link)์™€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(Object File)  <- ์ •์ ๋งํฌ, ๋™์  ๋งํฌ ๋‚ด์šฉ ์ฐธ๊ณ 
 
๋™์  ๋งํฌ์—์„œ๋Š” ‘๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ’๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋งคํ•‘๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ์ค‘์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋งคํ•‘๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ฐพ๊ณ , ๊ทธ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๊ณผ์ •์€ ์‚ฌ๋žŒ์ด ๋„์„œ๊ด€์— ๋ฐฉ๋ฌธํ•ด์„œ ์›ํ•˜๋Š” ์ฑ…์˜ ์œ„์น˜๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ฑ…์—์„œ ์ •๋ณด๋ฅผ ์Šต๋“ํ•˜๋Š” ๊ณผ์ •๊ณผ ์œ ์‚ฌํ•˜๋‹ค!
 

์™ผ์ชฝ์€ ์ •์  ๋งํฌ๋ฅผ ํ†ตํ•ด, ์˜ค๋ฅธ์ชฝ์€ ๋™์  ๋งํฌ๋ฅผ ํ†ตํ•ด puts ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
์™ผ์ชฝ์—๋Š” ๊ทธ๋ƒฅ puts์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋กœ ์ด๋™ํ•˜์ง€๋งŒ, ์˜ค๋ฅธ์ชฝ์—์„œ๋Š” puts@plt๋ผ๊ณ  puts๊ฐ€ ์žˆ๋Š” ์–ด๋–ค ํ…Œ์ด๋ธ”์—์„œ ์–˜๋ฅผ ์ฐพ์•„์„œ ํ˜ธ์ถœํ•œ๋‹ค!! 
 

 


๋‹ค์Œ ํŽธ

[ROP ์‹œ๋ฆฌ์ฆˆ (2)] PLT, GOT

 

[ROP ์‹œ๋ฆฌ์ฆˆ (2)] PLT, GOT

๐Ÿ”ROP ์‹œ๋ฆฌ์ฆˆ๐Ÿ” [ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ [ROP ์‹œ๋ฆฌ์ฆˆ (2)] PLT, GOT ์ฒซ๋ฒˆ์งธ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” GOT์— ์•„์ง putsํ•จ์ˆ˜์˜ ์ฃผ์†Œ๊ฐ€ ์ ํ˜€์žˆ์ง€ ์•Š๋‹ค. ์‹ค์ œ putsํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋Š” putsํ•จ์ˆ˜ ์•ˆ์—์žˆ๋Š” _dl_r

hannahsecurity.tistory.com


Reference
https://learn.dreamhack.io/66#9
 

profile

rosieblue

@Rosieblue

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!