ROP 2

[System Hacking] basic_rop_x64

์Šคํƒ ํ”„๋ ˆ์ž„ ๋ถ„์„ Return address (0x8) SFP (0x8) buf [rbp-0x40] (0x40) ๊ณต๊ฒฉ ๊ณ„ํš ์ตœ์ข… ๋ชฉํ‘œ: system("/bin/sh") ์ˆ˜ํ–‰ํ•  ๊ฒƒ. * system() ์ฃผ์†Œ ๊ตฌํ•˜๊ธฐ = lib_base + system_offset ** lib_base ๊ตฌํ•˜๊ธฐ = read() ์ฃผ์†Œ - read_offset *** read() ์ฃผ์†Œ ๊ตฌํ•˜๊ธฐ ROP๋ฅผ ํ†ตํ•ด, write(1, read@got, ...) * "/bin/sh" ์ฃผ์†Œ ๊ตฌํ•˜๊ธฐ = lib_base + binsh_offset ** system_offset, read_offset, binsh_offset ๊ตฌํ•˜๊ธฐ libc๋ฅผ ์ด์šฉ * Return address๋ฅผ system("/bin/sh")๋กœ Overwrite ROP๋ฅผ ์ด์šฉ ex..

[Return Oriented Programming]

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