๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

basic_rop_x64

basic_rop_x64 WriteUp ๋ฌธ์ œ ํ’€์ด NX์™€ Partial RELRO๊ฐ€ ๊ฑธ๋ ค์žˆ๋„ค์š” ๋‹คํ–‰์ธ ์ ์€ Canary๊ฐ€ ์—†๊ธฐ์— ๊ทธ ๋ถ€๋ถ„์€ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค.. ๋‹‰๊ฐ’ํ• ๊ฑฐ๋‹ˆ๊นŒ ROP๋กœ ํ’€์–ด์•ผ๊ฒ ๋„ค์š” ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด ์ด์ „ ๋‚ด์šฉ์ด๋ž‘ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์ด๋„ค์š” read()ํ•จ์ˆ˜์— bof๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ๊นŒ์š” ๊ทธ๋Ÿผ ์‹ค์ œ๋กœ ์–ด๋–ค ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋˜์—ˆ๋Š”์ง€๋„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. buf์—์„  0x40์ด์ง€๋งŒ read์—์„  0x400์ด๋‚˜ ๋ฐ›๊ธฐ์— bof๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ณดํ˜ธ๊ธฐ๋ฒ•์„ ๊ณ ๋ คํ•ด์„œ NX์ด๋ฏ€๋กœ ์™ธ๋ถ€ ์‰˜ ์ฝ”๋“œ ์‹คํ–‰ X, ๊ทธ๋ ‡๋‹ค๊ณ  ์—ฌ๊ธฐ์„œ system๊ฐ™์€ ํ•จ์ˆ˜๋„ ์ฝ”๋“œ์— ์กด์žฌ X์ด๋ฏ€๋กœ Return Overwrite Programming์„ ํ•ด์•ผ๊ฒ ๋„ค์š”(๋‹คํ–‰์ด Lazy Binding์ด๋‹ˆ๊นŒ...) ๊ทธ๋Ÿผ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ธฐ์œ„ํ•ด ํ•ด๋‹น lib์ธ libc.so.6์— ๋Œ€..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

Background: PIE

์„œ๋ก  ASLR์ด ์ ์šฉ๋˜๋ฉด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ, ํž™, ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์ด ๋ฌด์ž‘์œ„ ์ฃผ์†Œ์— ๋งคํ•‘๋˜๋ฏ€๋กœ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ด ์˜์—ญ๋“ค์„ ๊ณต๊ฒฉ์— ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๋‚œ ์ฝ”์Šค์˜ ์‹ค์Šต addr์„ ๋– ์˜ฌ๋ ค ๋ณด๋ฉด, ๋‹ค๋ฅธ ์˜์—ญ์˜ ์ฃผ์†Œ๋Š” ๊ณ„์† ๋ณ€ํ™”ํ•˜๋Š”๋ฐ mainํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋Š” ๋งค๋ฒˆ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. Mitigation: NX & ASLR ์‹œ์Šคํ…œ ๋ณด์•ˆ์€ ์ง€๋‚œ ์ˆ˜๋…„๊ฐ„ ๋ฐœ์ „ํ•ด์˜จ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•๊ณผ ๋ณดํ˜ธ ๊ธฐ๋ฒ•์˜ ๋ฐœ์ „ ์–‘์ƒ์„ ๋ณด์‹œ๋ฉด.. ์–ด๋–ค ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ•˜๋ฉด ์šฐํšŒ ๊ธฐ์ˆ ๋„ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.. ์ด๋ ‡๊ฒŒ ์–ด๋–ค ๊ณต๊ฒฉ์ด ์˜ฌ์ง€ ๋ชจ๋ฅด๊ธฐ์— ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž๋“ค dystopia050119.tistory.com ์ด๋Ÿฐ ํŠน์ง•์„ ์ด์šฉํ•ด ๊ณต๊ฒฉ์ž๋Š” ๊ณ ์ •๋œ ์ฃผ์†Œ์˜ ์ฝ”๋“œ ๊ฐ€์ ฏ์„ ํ™œ์šฉํ•œ ROP๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Position-Independent Executable(..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

Overwrite _rtld_global

Overwrite _rtld_global ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฆฌํ„ด ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด lib์™€ ๋กœ๋”์—์„œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ! HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ๋ชจ๋“  ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ์ ์šฉ๋œ ๋ชจ์Šต ์•„๋ฌด๋ž˜๋„ ๋กœ๋”๋ฅผ ์šฐํšŒํ•˜์—ฌ ์‹คํ–‰ํ•ด๋ด์•ผ๊ฒ ๋„ค์š” exploit ์„ค๊ณ„ lib ๋ฐ loder base addr ๊ณ„์‚ฐ ์˜ˆ์ œ์—์„œ ์ œ๊ณตํ•œ stdout ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด lib_base๋ฅผ ๊ตฌํ•˜๊ณ  "/lib64/ld-linux-x86-64.so.2"๊ฐ€ ๋งตํ•‘๋œ ๋กœ๋”์˜ ๋ฒ ์ด์Šค ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋กœ๋”๊ฐ€ ๋งตํ•‘๋œ ์ฃผ์†Œ์˜ ๊ฐ„๊ฒฉ์€ ์ผ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ๊ฐ„๊ฒฉ์„ ์•Œ์•„๋‚ด๊ณ  ์˜คํ”„์…‹์„ ๊ณ„์‚ฐํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. _rtld_global ๊ตฌ์กฐ์ฒด ๊ณ„์‚ฐ ๋กœ๋”์˜ ๋ฒ ์ด์Šค ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด, rtld_global ๊ตฌ์กฐ์ฒด์˜ ์‹ฌ๋ณผ ์ฃผ์†Œ๋ฅผ ๋”ํ•ด ํ•ด๋‹น ๊ตฌ์กฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

rtld

์ฐธ๊ณ ๋กœ rtld๋Š” return to LD library ๋ผ๊ณ  ์ถ”์ธกํ•˜์‹œ๋Š” ๋ถ„์ด ์žˆ์œผ์‹œ๋”๋ผ๊ณ ์š” ์ €๋„ ์–ด๋Š์ •๋„ ๊ทธ๋Ÿฌ์ง€ ์•Š์„๊นŒ?(์—ฌ๊ธฐ ๋กœ๋˜๋ฆฌ์•ˆ์ฒ˜๋Ÿผ ใ…Ž) rtld HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค stdout์ด ์ถœ๋ ฅ๋˜๋‹ˆ๊นŒ lib_base๋ฅผ ๊ตฌํ•˜๋ฉฐ, ์ž„์˜ ์ฃผ์†Œ ์“ฐ๊ธฐ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. get_shell()ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ.. stdout์ด ์ถœ๋ ฅ๋˜๋‹ˆ๊นŒ lib_base๋ฅผ ๊ตฌํ•˜๋ฉฐ, ์ž„์˜ ์ฃผ์†Œ ์“ฐ๊ธฐ ์ทจ์•ฝ์ (์ „์— ํ–ˆ๋˜)์ด ์กด์žฌ get_shell() ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ NX๋„ ์šฐํšŒ๋˜๊ณ  ๋‚˜๋จธ์ง€ ์ทจ์•ฝ์ ์€ ์ธ์ž๋กœ ํ•˜๋‹ˆ๊นŒ ใ…‡ใ…‹ ์ฆ‰, ์ž„์˜ ์ฃผ์†Œ ์“ฐ๊ธฐ ์ทจ์•ฝ์ ์„ ์ด์šฉ dl_rtld_lock_recursive๋ฅผ get_shell()๋กœ ๋ฎ์–ด ์‰˜์„ ๋”ฐ๋ฉด ์…ธ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด Partial RELRO๋‹ˆ๊นŒ GOT Overwrite..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

Background: _rtld_global

_rtld_global ๋ฆฌ๋ˆ…์Šค ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์— ๋ช…์‹œ๋œ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์šฐ๋ฆฌ์—๊ฒŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์–ด ํ”„๋กœ์„ธ์Šค๋กœ ๋“ฑ๋ก ์‹œ ํ”„๋กœ๊ทธ๋žจ์— ๋ช…์‹œ๋œ ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์—ฌ์—ญ์„ ํ• ๋‹นํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๊ฐ€ ๋กœ๋”์— ์˜ํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ฑ๋ก๋˜๊ฑฐ๋‚˜ ์ข…๋ฃŒ ์‹œ ์“ฐ์ด๋Š” ๋ณ€์ˆ˜์™€ ์˜์—ญ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์˜ ๊ณต๊ฒฉ ๊ธฐ๋ฒ• ๊ฐœ๋ฐœ! ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ €ํฌ ๋ณด์•ˆ์ชฝ์—์„  ์ด๋Ÿฐ ๊ตฌ์กฐ์™€ ๊ตฌ๋™์„ ์ดํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ๊ฐ™์ด ์•Œ์•„๋ด…์‹œ๋‹ค. HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค __GI_exit ์•ž์„œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด ๋ณ„๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰X ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ข…๋ฃŒ์‹œ์— ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋ฅด๋Š” ๋งŽ์€ ์ฝ”๋“œ๋“ค์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”๋ฐ, ํ•œ๋ฒˆ ์‚ดํŽด๋ด…์‹œ๋‹ค. ์ผ๋‹จ main ํ•จ์ˆ˜ ๋‚ด ๋ฆฌํ„ดํ•˜๋Š” ๋ช…๋ น์–ด์— ๋ธŒํฌ๋ฅผ ์„ค์ • ..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

send_sig

send_sig ์Œ.. ๋‚ด ๋ญ setvbuf ๋ถ€๋ถ„๊ณผ 5-7๊นŒ์ง€๋Š” 1๋ฒˆ์งธ ์ธ์ž 1์ด๋‹ˆ๊นŒ write์ธ๋“ฏ ์‹ถ๋„ค์š” ๊ทธ๋ฆฌ๊ณ  11๋ฒˆ์งธ ์ฝ”๋“œ๊ฐ€ signal์„ writeํ•ด์„œ read์„ 1024byte๋งŒํผ ํ•˜๋Š” ๊ฑธ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ v3๊ฐ€ ์ด์ œ buf์ธ ๋“ฏ ์‹ถ๊ธฐ์— v3[8]์ด๊ตฌ๋‚˜.. ์ด๋ฅผ ์ด์šฉํ•ด NX๊ฐ€ ๊ฑธ๋ ค ์žˆ์œผ๋ฏ€๋กœ SROP๋ฅผ ํ•ฉ์‹œ๋‹ค(Partial RELRO ์šฐํšŒ) ์—ฌ๊ธฐ์„œ ์ „ ๋ฌธ์ œ์ฒ˜๋Ÿผ gadget์ด ์—†๊ธฐ์—.. ์ผ๋‹จ execve์˜ ํ•จ์ˆ˜๋‚˜ binsh๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ด…์‹œ๋‹ค. PIE๊ฐ€ ์•ˆ ๊ฑธ๋ ค์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ด ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•ด์„œ bss ์˜์—ญ์œผ๋กœ read ํ•ด์„œ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์š” ํŽธํ•ด์กŒ๋„ค์š” ๋‚˜์ด์Šค ์ต์Šค ์„ค๊ณ„ sigreturn ํ˜ธ์ถœ SROP๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด sigreturn ์‹œ์Šค์ฝœ์„ ํ˜ธ์ถœํ•ด์•ผ์ฃ  ๊ทธ๋ฆฌ๊ณ  ์•ž์—์„œ ๋Œ€์ถฉ sig..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

SigReturn-Oriented Programming

SigReturn-Oriented Programming ์ด๊ฑด.. gadget??์ด ์žˆ๊ณ  signal์˜ ํ™œ์šฉํ•œ sigreturn์ด ์กด์žฌํ•˜๋„ค์š” Partial RELRO๋กœ ROP ๋Š๋‚Œ ๋‚˜์ฃ  gadget(NX ์šฐํšŒ)ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ read๋Š” 1024byte๋งŒํผ ๋ฐ›๊ธฐ์— bof ์‹œ์Šค์ฝœ์„ ํ˜ธ์ถœ ๋ ˆ์ง€์Šคํ„ฐ ์กฐ์ž‘ ์…ธ ํš๋“์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ต์Šค ์„ค๊ณ„ sigreturn ํ˜ธ์ถœ SROP๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด sigreturn ์‹œ์Šค์ฝœ์„ ํ˜ธ์ถœํ•ด์•ผ์ฃ  ์˜ˆ์   ์ž„์˜ ์‹œ์Šค์ฝœ์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก gadget ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด๋ถ€ ์ฝ”๋“œ ๊ฐ€์ ฏ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๊ณ  ์‹œ์Šค์ฝœ ๋ฒˆํ˜ธ(sig_id?)์™€ syscall์„ ํ†ตํ•ด sigreturn์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. execve ํ˜ธ์ถœ sigreturn์€ ์Šคํƒ ์˜์—ญ์˜ ๊ฐ’์„ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1024 ..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

__environ

Exploit Tech: __environ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฆฌํ„ด ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด lib์™€ ์ธ์ž์—์„œ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ! HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ํ”„๋กœ์„ธ์Šค๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—” lib ํ•จ์ˆ˜์—์„œ ์ฐธ์กฐํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํฌ์ธํ„ฐ์™€ ๊ด€๋ จ๋œ ๊ณต๊ฒฉ์„ ์‹ค์Šตํ•ฉ์‹œ๋‹ค. /etc/passwd ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ๊ณ  ์Šคํƒ ๋ฒ„ํผ์— ์ €์žฅํ•˜๋Š”๊ตฐ์š” ๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ๋Š” stdout ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋ฐ˜๋ณตํ•ด ์ž„์˜ ์ฃผ์†Œ์— ์žˆ๋Š” ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ชจ๋“  ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ์กด์žฌํ•˜๊ธฐ์— ๋ชจ๋“  OS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜(environment ariable)๋Š” ๋งค๋ฒˆ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ ์ธ ๊ฐ’๋“ค์˜ ๋ชจ์ž„์œผ๋กœ, ์‹œ์Šคํ…œ์˜ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ถ”๊ฐ€..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

Background: SigReturn-Oriented Programming

๋“ค์–ด๊ฐ€๋ฉฐ.. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋ฒ• ๊ฐœ๋… ์ž์ฒด๊ฐ€ ์—†์„ ๋•Œ์—๋Š” ์…ธ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•ด ์ž„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์„ ์ด์šฉํ•œ ์œ„ํ—™์ด ๊ณ„์†๋˜์ž ์…ธ์ฝ”๋“œ์˜ ์‹คํ–‰ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ NX ๋“ฑ์žฅ ๊ทธ๋Ÿฌ๋‚˜ ์–ผ๋งˆ๊ฐ€์ง€ ์•Š์•„ ์…ธ์ฝ”๋“ค๋ฅด ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  lib ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ๋ณดํ˜ธ๊ธฐ๋ฒ•์„ ์šฐํšŒํ•˜๋Š” RTL! ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ›๋ฅผ ์žฌํ™œ์šฉํ•ด ์ž„์˜ ํ•จ์ˆ˜๋ฅผ ์—ฐ์†ํ•ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ROP๋„ ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์ทจ์•ฝ์ ์ด ์žˆ๋‹คํ•ด๋„ ๊ณต๊ฒฉ ๋Œ€์ƒ์˜ ๋ณดํ˜ธ ๊ธฐ๋ฒ• ๋˜๋Š” ์‹คํ–‰ ์ฝ”๋“œ์— ๋”ฐ๋ผ ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ์— ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๊ณ„์† ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค ์ด๋ฒˆ์—” 2014๋…„ ๋ฐœํ‘œํ•œ SROP๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์‹œ๊ทธ๋„(Signal)์„ ์•Œ์•„๋ด…์‹œ๋‹ค. Signal [๋ฆฌ๋ˆ…์Šค / ์œ ๋‹‰์Šค ] ์‹œ๊ทธ๋„์ด๋ž€? ์‹œ๊ทธ๋„(SIGNAL) ์ข…๋ฅ˜, ์ƒ..

๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking

Master Canary

Master Canary ๋งˆ์Šคํ„ฐ ์นด๋‚˜๋ฆฌ๋ฅผ ์Šคํƒ ๋ฒ„ํผ์™€ ํ™•์ธํ•˜๋Š” ๋ฒ•! HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ์œ„ ์ฝ”๋“œ๊ฐ€ ํ•ต์‹ฌ์ธ๋“ฏ ์‹ถ์œผ๋ฉฐ, ๋ณด์‹œ๋ฉด.. 1๋ฒˆ ์˜ต์…˜์œผ๋กœ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑ/2๋ฒˆ์€ size๋ฅผ ์ž…๋ ฅ ํ•ด๋‹น ์ž…๋ ฅ size๋งŒํผ ์ž…๋ ฅ์„ ๋ฐ›๋„ค์š” ์ฆ‰, bof๊ฐ€ ๋ฐœ์ƒ๋˜๊ฒ ์ฃ ? ๋งˆ์ง€๋ง‰์€ read ํ•จ์ˆ˜๋กœ 1024๋ฐ”์ดํŠธ๋งŒํผ ์ž…๋ ฅ ๋ฐ›๊ธฐ Master canary๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด๊ธฐ์—(Partial RELRO, Canary)๋ฅผ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์— get_shell()์˜ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ NX๋„ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ์นด๋‚˜๋ฆฌ๋Š” ๋กœ๋”์—์„œ ํ• ๋‹นํ•œ TLS ์˜์—ญ์— ์กด์žฌํ•˜๊ณ , ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” RW-๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜์—ญ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ๋งํฌ์— ๋Œ€ํ•˜์—ฌ ์ž์„ธํžˆ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ถฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ค๊ณ„ํ•˜์ž๋ฉด.. 1๋ฒˆ์œผ๋กœ ..

Jastes
'๐ŸŒ‡โ”‚System_Study/๐Ÿ“•โ”‚Dreamhack_Hacking' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก