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

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

Tcache Poisoning

์œ„ ๋‚ด์šฉ์€ ํ•„์ˆ˜๋กœ ์ˆ™์ง€๋ฅผ ํ•ด์•ผ์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ค๊ณ„ ๋ฐ ๊ธฐ๋ณธ์ด ๋ฉ๋‹ต๋‹ˆ๋‹ค. Tcache Poisoning ๋ฌธ์ œ ํ’€์ด Full RELRO์™€ NX๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. ์ฆ‰, hook overwrite ๊ณต๊ฒฉ์„ ๊ณ ๋ คํ•  ๋ฒ• ํ•˜๊ตฐ์š” Tcache Poisoning์„ ํ™œ์šฉ์œผ๋กœ tcache๋ฅผ ์กฐ์ž‘ํ•ด ์ž„์˜ ์ฃผ์†Œ์— ์ฒญํฌ๋ฅผ ํ• ๋‹น์‹œํ‚ค๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต์‹œํ‚จ ๋ฐฉ๋ฒ•์œผ๋กœ ์•ž์—์„œ ์‚ฌ์šฉํ•œ ๋‹ฌ๋งํฌ์ธํ„ฐ๋„ ์œ„ ๋ฐฉ์‹์˜ ํ™œ์šฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” ์ค‘๋ณต์œผ๋กœ ์—ฐ๊ฒฐ๋œ(FIFO ํ˜•์‹์˜ ๋”๋ธ” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธํ˜•์‹..๊ทธ๋ž˜์„œ ๊ณต๋ถ€ํ•˜๋ผ๊ณ  ํ–ˆ์„๊นŒ์š”?) frist /bin ๋“ฑ์ด ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์˜ ์ฒญํฌ๊ฐ€ ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ ์ค‘๋ณต์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ฒญํฌ๋ฅผ ์žฌํ• ๋‹น ์‹œ, ๊ทธ ์ฒญํฌ๋Š” ํ• ๋‹น๋œ ์ฒญํฌ์ด๋ฉด์„œ ๋™์‹œ์— ํ•ด์ œ๋œ ์ฒญํฌ..

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

Background: RELRO

RELRO(RELocation Read-Only) ๋“ฑ์žฅ๋ฐฐ๊ฒฝ - ELF๋Š” GOT๋ฅผ ํ™œ์šฉํ•ด ๋ฐ˜๋ณต๋˜๋Š” lib์˜ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๋น„์šฉ ↓ - GOT์˜ ๊ฐ’์„ ์ฑ„์šฐ๋Š” ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ทธ์ค‘์— ์šฐ๋ฆฐ Lazy Binding์œผ๋กœ ์ทจ์•ฝ์  ์šฐํšŒ : ํ•จ์ˆ˜๊ฐ€ ์ฒ˜์Œ ํ˜ธ์ถœ๋  ๋•Œ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜๊ณ , ์ด๋ฅผ GOT์ ๋Š” ๋ฐฉ์‹ - Lazy binding ํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์‹คํ–‰ ์ค‘ ๊ณ„์† ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผํ•ด GOT์— ์“ฐ๊ธฐ โ—‹ : RTL, Chain RTL, ROP๋กœ ์ด์–ด์ง ๋˜ํ•œ ELF์˜ ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ดˆ๊ธฐํ™” ๋ฐ ์ข…๋ฃŒ์™€ ๊ด€๋ จ๋œ .init_array .fini_array ๋กœ์จ, ์ด ์˜์—ญ๋“ค์€ ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ์— ์‹คํ–‰ํ•  ํ•จ์ˆ˜๋“ค์˜ ์ฃผ์†Œ ์ €์žฅ ์—ฌ๊ธฐ์— ๊ณต๊ฒฉ์ž๊ฐ€ ์ž„์˜๋กœ ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ํ๋ฆ„์ด ์กฐ์ž‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ..

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

basic_exploitation_003

basic_exploitation_003 ๋ฌธ์ œ ํ’€์ด ๋˜ x86..์ด๋„ค์š” ์ด๊ฑฐ ์ด์   ์ต์ˆ™ํ•ด์ง€๊ฒ ๋„ค ์ข‹๋‹ค NX์™€ Partial RELRO.. ๊ทธ๋Ÿฌ๋‚˜ FSB๋กœ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋‹ˆ๊นŒ C์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด head_buf๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ret๋ถ€๋ถ„์— get_shell()์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋  ๊ฑฐ ๊ฐ™์€๋ฐ.. sprintf ๋Š” ๊ธธ์ด๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— bof๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. BOF๋ฌธ์ œ์ด์ง€๋งŒ.. ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธ€์งœ ์ˆ˜๊ฐ€ read๋กœ 0x80์œผ๋กœ ์ œํ•œ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ์ €ํฌ๋Š” 0x90์„ ๋„˜๊ฒจ์•ผํ•˜๋Š”๋ฐ.. Exploit ์„ค๊ณ„ ret ์ฃผ์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  %Nc๋กœ ret์— get_shell()์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋๋‚˜๊ฒ ๋„ค์š” Exploit stack_buf์˜ ์ฃผ์†Œ๋Š” sprintf๋กœ ๋˜๋‹ˆ๊นŒ ์œ„์™€ ๊ฐ™์ด ํ™•์ธ๋„ ๋ฉ๋‹ˆ๋‹ค heap_buf์˜ ์ฃผ์†Œ๋Š” read์—์„œ ํ™•..

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

hook

hook ๋ฌธ์ œ ํ’€์ด ์ด๋ฒˆ์—๋„ hook overwirte์˜ ๋ฌธ์ œ๋กœ ์ด์ „ ๋ฌธ์ œ์—์„œ ๋ดค๋˜ ํ˜•์‹๊ณผ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฅด๋„ค์š” ์•„๋ฌด๋ž˜๋„ one_gadget์ฒ˜๋Ÿผ์€ ๋ชปํ•˜๋Š” ๋“ฏ ์‹ถ๋„ค์š” PIE๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  RELRO๊ฐ€ FULL.. ์ƒ๋‹นํžˆ ํž˜๋“ค๊ฒ ๋„ค์š” PIE๊ฐ€ ์ ์šฉ X์ธ๊ฒƒ์„ ๋ดค์„ ๋•Œ code ์˜์—ญ์—์„œ ์ฃผ์†Œ๋ฅผ ํ™œ์šฉํ•  ๋“ฏ? ๊ทผ๋ฐ one_gadget์œผ๋กœ ํ•ด๋„ ๋  ๊ฑฐ ๊ฐ™๊ธดํ•œ๋ฐ ์ด๋ฆ„์— ๋”ฐ๋ผ์„œ ํ•ด๋ด…์‹œ๋‹ค log์˜ ํƒ€์ž…์˜ ํฌ์ธํ„ฐ ํ•˜๋‚˜์™€ size_t ํƒ€์ž…์˜ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  stdout.. ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ๋ฐ‘์— ptr์ด ๋”๋ธ”ํฌ์ธํ„ฐ์ธ์ ์„ ๋ฏธ๋ฃจ์–ด๋ณด์•˜์„ ๋•.. ์œ„์— ๋ดค๋˜ ๋”๋ธ”ํฌ์ธํ„ฐ ptr๋ถ€๋ถ„์—์„œ ๋ฐฐ์—ด์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ ptr[0]์— ๋“ค์–ด๊ฐ„ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’์— ptr[1]์„ ๋Œ€์ž…ํ•œ ๋ชจ์Šต์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ์ฆ‰, **ptr = ptr[1]์ธ ๋Š๋‚Œ..

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

fho

fho ๋ฌธ์ œ ํ’€์ด ๋ชจ๋“  ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ์ ์šฉ๋˜์–ด ์žˆ๋„ค์š”.. ์™€์šฐ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์šฉ์–ด ํ‚ค์›Œ๋“œ Hooking: ์–ด๋–ค ํ•จ์ˆ˜, ํ”„๋กœ๊ทธ๋žจ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค ํ•  ๋•Œ ์ด๋ฅผ ๊ฐ€๋กœ์ฑ„์„œ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋ฒ•. ๋””๋ฒ„๊น…, ๋ชจ๋‹ˆํ„ฐ๋ง, ํŠธ๋ ˆ์ด์‹ฑ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ํ‚ค๋กœ๊น…์ด๋‚˜ ๋ฃจํŠธํ‚ท ์ œ์ž‘์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ. Hook Overwrite: ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ํ›…์„ ๋ฎ์–ด์จ์„œ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ์•…์˜์ ์ธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ๋œ malloc, free, realloc๋“ฑ์˜ ํ•จ์ˆ˜๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ํ›… ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ. Full RELRO๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ. one_gadget: ์‹คํ–‰ํ•˜๋ฉด ์…ธ์ด ํš๋“๋˜๋Š” ์ฝ”๋“œ ๋ญ‰์น˜...

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

basic_rop_x86

basic_rop_x86 ๋ฌธ์ œ ํ’€์ด NX์™€ Partial RELRO๊ฐ€ ๊ฑธ๋ ค์žˆ๋„ค์š” ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ์ ‘๊ทผํ•ด๋ณด๋ฉด Canary๋Š” ์ ์šฉ๋˜์–ด ์žˆ์ง€ ์•Š๋„ค์š” ๋‹คํ–‰์ด์˜ˆ์š” ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด ์ด์ „ ๋‚ด์šฉ์ด๋ž‘ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์ด๋„ค์š” read()ํ•จ์ˆ˜์— bof๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ๊นŒ์š” ๊ทธ๋Ÿผ ์‹ค์ œ๋กœ ์–ด๋–ค ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋˜์—ˆ๋Š”์ง€๋„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์‹ค์ œ๋กœ๋Š” 0x44๋กœ ์žกํ˜€์žˆ๋„ค์š” Exploit ์„ค๊ณ„ ๊ทธ๋Ÿผ ์ €ํฌ๋Š” ์ด์ „์— ํ–ˆ๋˜ ๊ฑฐ์ฒ˜๋Ÿผ system()ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด์–ด ์ตœ์ข…์ ์œผ๋กœ system("/bin/sh") ํ˜ธ์ถœ! ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด read()ํ•จ์ˆ˜์™€ write()๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์ฃผ์†Œ๋ฅผ leakํ•˜๋Š” ๋ฐฉ์‹์€ ์ด์ „์— ๋ฐฐ์› ์œผ๋ฏ€๋กœ ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์œผ๋กœ ์ €ํฌ๋Š” rop chain์„ ์ด์šฉํ•ด overwirte ํ•ด์ฃผ๊ณ  ์ด๋ฒˆ์—” bss ์˜์—ญ์„ ํ™œ์šฉํ•˜์—ฌ ์ ‘๊ทผํ• ๊ฑฐ์˜ˆ..

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

out_of_bound

out_of_bound ๋ฌธ์ œ ํ’€์ด ๋ฐฐ์—ด์˜ ์ •ํ•ด์ง„ ์ธ๋ฑ์Šค๋ฅผ ๋„˜๋Š” Out of bound ๋ฌธ์ œ๋กœ์จ x86..์œผ๋กœ Canary์™€ NX๊ฐ€ ์กด์žฌํ•˜๋„ค์š” name[16]์™€ command์˜ ๋ฌธ์ž ๋ฐฐ์—ด์„ ๋‹ด์€ ๋ฐฐ์—ด์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. main์ด ์ค‘์‹ฌ์ด๋‹ˆ๊นŒ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด name์„ ์ž…๋ ฅ ๋ฐ›๋Š”๋ฐ ํ›„์— idx๋ฅผ ์ž…๋ ฅ ํ›„ system์— command์˜ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋Š” ๋ชจ์Šต์„ ๋ณด๋‹ˆ๊นŒ ํ™•์‹คํžˆ oob ๋ฌธ์ œ์ธ ๋“ฏํ•˜๋„ค์š” ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•  ํ•จ์ˆ˜๋Š” system("/bin/sh")์ด๋ฏ€๋กœ command์—๋Š” "/bin/sh"๊ฐ€ ์—†์œผ๋ฏ€๋กœ idx์˜ ๊ฐ’์„ ํ™œ์šฉํ•ด command์˜ 10์„ ๋„˜์–ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค Exploit ์„ค๊ณ„ name ๋ณ€์ˆ˜๊ฐ€ ์„ค์ • ํ›„ command์˜ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜๋ฏ€๋กœ name๋ณ€์ˆ˜๊ฐ€ ์Šคํƒ์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•ด๋ด์š” ์Šคํƒ์€ ์Œ“์ด๊ธฐ ๋•Œ๋ฌธ์—..

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

oneshot

out_of_bound ๋ฌธ์ œ ํ’€์ด ์ด๋ฒˆ์—๋„ hook overwirte์˜ ๋ฌธ์ œ๋กœ one gadget์„ ์ด์šฉํ•ด ํ‘ธ๋Š” ๋ฌธ์ œ์ธ๋ฐ.. ๋ฌธ์ œ๋Š” ์•„์ง ์ ์šฉ๊ณผ ์‘์šฉ์„ ์ž˜ ๋ชปํ•ด์„œ.. ๊ฑฑ์ •์ž…๋‹ˆ๋‹ค ๋ณด์‹œ๋ฉด RELRO๊ฐ€ partial๋กœ ์ ์šฉ canary๋Š” ๊ธฐ์ดˆ๋ผ์„œ ์—†๋Š” ๋“ฏ ์‹ถ๊ณ  NX์™€ PIE๊ฐ€ ์ ์šฉ๋œ ๋ชจ์Šต main๋งŒ ๋ณด์‹œ๋ฉด ๋  ๋“ฏ ์‹ถ๊ณ , ์ฒ˜์Œ 16 byte ํฌ๊ธฐ์˜ msg์˜ ๋ฐฐ์—ด ์„ ์–ธ ์ €๋ฒˆ์ฒ˜๋Ÿผ stdout์˜ ์ฃผ์†Œ๋„ ์•Œ๋ ค์ฃผ๋Š” ๋ชจ์Šต์ด๋„ค์š” ์ด๊ฒƒ์„ ํ™œ์šฉํ•ด libc_base์™€ hook ์ฃผ์†Œ๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ๊ทธ ์ดํ›„ ์ตœ๋Œ€ 46 ๋ฐ”์ดํŠธ ๋ฐ›์œผ๋ฏ€๋กœ bof๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค ์œ„์— ์„ ์–ธํ•œ check๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํด ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฏ€๋กœ check๋ผ๋Š” ๊ฐ’์˜ stack์˜ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ด์–ด 0์ด ๋˜๋„๋ก payload ์„ค๊ณ„๊ฐ€ ํ•ต์‹ฌ! mas์— ์ž…..

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

basic_exploitation_002

basic_exploitation_002 ๋ฌธ์ œ ํ’€์ด ๋˜ x86..์ด๋„ค์š” ์ด๊ฑฐ ์ด์   ์ต์ˆ™ํ•ด์ง€๊ฒ ๋„ค ์ข‹๋‹ค NX์™€ Partial RELRO.. ๊ทธ๋Ÿฌ๋‚˜ FSB๋กœ ํ’€์–ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋‹ˆ๊นŒ C์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด buf(0x80) ๋งŒํผ ํ• ๋‹น read()์—์„œ ๊ทธ๋งŒํผ ์ž…๋ ฅ๋ฐ›๊ธฐ์— BOF๋Š” ๋ฐœ์ƒ X ๊ทธ๋Ÿฌ๋‚˜ printf(buf)๋กœ FSB๋Š” ๋œ๋‹ค๋Š” ์ ๊ณผ get_shell() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋๋‚˜๋Š” ์ ! FSB : Format String Bug ๋กœ ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋กœ ๋น›์–ด์ง„ ๋ฒ„๊ทธ Exploit ์„ค๊ณ„ FSB๋Š” %p %x %n %hn %N$FSB ๋“ฑ์ด ํ•ต์‹ฌ์œผ๋กœ์จ ์Šคํƒ์€ ์Œ“์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ ๋” ๋†’์€ ๋ณ€์ˆ˜์— ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ฃ  ๊ทธ๋Ÿผ 10๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ ๋‹นํžˆ ๋„ฃ๋Š”๋‹ค๋ฉด ์–ธ์  ๊ฐ„ name์˜ ๋ณ€์ˆ˜์— ๋‹ฟ๊ณ  name์— "/bin/sh"๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๋„ฃ๋Š”..

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

Exploit Tech: Return Oriented Programming

Return Oriented Programming ROP : ๋ฆฌํ„ด ๊ฐ€์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์‹คํ–‰ ํ๋ฆ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ• ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ ์ƒํ™ฉ์— ๋งž์ถฐ RTL/Return to dl-resolve/GOT overwrite ๋“ฑ์„ ์ด์šฉํ•ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค! ์ง€๋‚œ ์‹œ๊ฐ„์— pop rdi; ret์„ ์‚ฌ์šฉํ•ด system("/bin/sh")์„ ํ˜ธ์ถœํ•œ ๊ฒƒ๋„ ROP๋ฅผ ์ด์šฉํ•œ RTL์ž…๋‹ˆ๋‹ค. ROP ํŽ˜์ด๋กœ๋“œ๋Š” ๋ฆฌํ„ด ๊ฐ€์ ฏ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ, ret ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๊ฐ€ ์—ฐ์‡„์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ์Šต์—์„œ ROP Chain์ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. // Name: rop.c // Compile: gcc -o rop rop.c -fno-PIE -no-pie #include #include int main() { char buf[0x30]; s..

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