๐ŸŒ‡โ”‚System_Study

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

tcache_dup

tcache_dup ๋ฌธ์ œ ํ’€์ด NX์™€ Partial RELRO ๊ทธ๋ฆฌ๊ณ  Canary๋ผ๋‹ˆ.. ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ทจ์•ฝ์ ์„ ์œ ์ถ”ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค ์ œ๋ชฉ์—์„œ ๋ณด๋“ฏ์ด ์•„๋งˆ DFB๊ฒ ๋‹ค๋งŒ.. ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด.. deleteํ•จ์ˆ˜ ๋ถ€๋ถ„์„ ๋ณด๋ฉด, ptr[idx]์„ ํ•ด์ œ ํ›„ ptr ํฌ์ธํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ DFB ์ทจ์•ฝ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค ๋˜ํ•œ get_shell์ด ์žˆ๊ธฐ์— NX์€ ๊ฑฑ์ • ์—†๋„ค์š” ์ทจ์•ฝ์ ์„ ๊ทธ๋Ÿผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด๋ณธ๋‹ค๋ฉด GOT overwrite๋„ ๊ฐ€๋Šฅํ•ด๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ์— ์ฒญํฌ๋ฅผ ํ• ๋‹น ํ›„ ๋‘ ๋ฒˆ ํ•ด์ œ double free์—์„œ ๊ทธ ๋‚ด์šฉ์„ ์กฐ์ž‘ ๊ทธ๋ฆฌ๊ณ  printf์˜ got ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ณ  ํ›„์— get_shell์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด overwrite.. Exploit ์„ค๊ณ„ ํž™ ํ• ๋‹น ํ›„ Double free๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒญํฌ์˜ next์˜ ..

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

validator

validator ๋ฌธ์ œ ํ’€์ด ๋ณดํ˜ธ๊ธฐ๋ฒ•์ด ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ํ•  ์ •๋„๋„ค์š”..? ์ฐธ๊ณ ๋กœ ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ์ฃผ์–ด์„œ ์ด๋ ‡๊ฒŒ IDA๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹น ๊ธฐ๋ณธ์ ์œผ๋ก  ์œ„์™€ ๊ฐ™์ด ํ˜•์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค emeset์„ ํ•œ ํ›„ validate ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„ค์š” ๊ทธ ์ธ์ž๋กœ๋Š” s์™€ 128์„ ์ฃผ๊ณ ์š” ๊ฐ ๋ฐ˜๋ณต๋ฌธ๋งˆ๋‹ค ์กฐ๊ฑด๋ฌธ์ด ์žˆ๋„ค์š” ์ฃผ์„์œผ๋กœ DREAMHACK์ด๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋„ค์š”.. ๋ฆฌ๋ฒ„์‹ฑ ๋ชปํ•˜๋Š”๋ฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ใ… ใ…  ์šฐ์„  ์ธ์ž๋กœ ๋„˜๊ธด ๋ฐฐ์—ด์ด DREAMHACK!์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ, ์œ„์— ํ•จ์ˆ˜์—์„œ j = 11๋ถ€ํ„ฐ j < 0x128๋งŒํผ s์˜ ๊ฐ ๋ฌธ์ž๊ฐ€ ์—†์–ด์ง€๋‚˜์š”? ๋จผ์ € ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด DREAMHACK! ๋ฌธ์ž์—ด๊ณผ ํ•œ ๋ฐ”์ดํŠธ์”ฉ ๋น„๊ตํ•˜๊ณ , 9 ๊ฐœ์˜ ๋ฌธ์ž ์ค‘ ๋™์ผํ•˜์ง€ ์•Š์€ ๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด exit ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ..

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

cmd_center

cmd_center ๋ฌธ์ œ ํ’€์ด ์–ด์งœํ”ผ cmd_injection์ด๋ผ์„œ ๋ณดํ˜ธ๊ธฐ๋ฒ•์€ ์˜๋ฏธ๊ฐ€ ์—†์„ ๊ฑฐ ๊ฐ™์€๋ฐ.. system ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ command injection์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†ํ›„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ read(0, center_name, 100)์˜ ๋ถ€๋ถ„์—์„œ BOF๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ cmd_ip๊ฐ’์„ ์กฐ์ž‘ํ•ด๋ด…์‹œ๋‹ค! Exploit ์„ค๊ณ„ ์šฐ๋ฆฐ center_name๊ณผ cmd_ip์˜ offset๋งŒ ๊ตฌํ•ด์„œ ๋„ฃ๊ณ  cmd injectionํ•˜๋ฉด ๋˜๊ฒ ์ฃ  ๋ณด์‹œ๋ฉด offset = 0x20๋งŒํผ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”๊ตฐ์š” Exploit ์œ„์—์„œ ๋‹ค ์„ค๋ช…ํ–ˆ์œผ๋‹ˆ ์ถ”๊ฐ€์ ์ธ ๋ถ€๋ถ„๋งŒ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋„ exploit.py๋ฅผ ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ตฐ์š” A*0x20์— ifconfig(ip์ฐพ๋Š” ๋ช…๋ น์–ด);/b..

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

uaf_overwr

uaf_overwrite ๋ฌธ์ œ ํ’€์ด ๋ชจ๋“  ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ์ ์šฉ๋˜์–ด ์žˆ๋„ค์š”.. ์™€์šฐ Dangling Pointer๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ์จ.. ์ฝ”๋“œ๊ฐ€ ์ƒํผํ•˜๋„ค์š” Dangling Pointer๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ผญ ์œ„ํ—˜ํ•œ ๋ถ€๋ถ„์€ ์•„๋‹ˆ์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ์—ฌ๊ธฐ์„  ์œ„ํ—˜ํ•˜๊ฒ ์ฃ  Human์ด๋ž‘ Robot์€ ๊ตฌ์กฐ์ฒด๋กœ ๊ฐ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์™€ ํฌ๊ธฐ ๋™์  ํ• ๋‹น ํ•ด์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค human_funcํ•จ์ˆ˜์™€ robot_func ํ•จ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น ์‹œ, ์ดˆ๊ธฐํ™” X memset()ํ•˜๋ผ๋Š” ์ด์•ผ๊ธฐ๊ตฌ๋‚˜! ๋ผ๋Š” ๊ฑธ ํ•œ์ฐธ ๋’ค์— ์•Œ๊ฒ ๋ฌ์Šต๋‹ˆ๋‹ค ์ €๋Š” ํ• ๋‹นํ•ด์ œํ•˜๋ฉด ์•Œ์•„์„œ ์ดˆ๊ธฐํ™” ๋˜๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ.. ๊ทธ๋Ÿผ Human ๊ตฌ์กฐ์ฒด์™€ Robot ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋Š” ๊ฐ™์œผ๋ฏ€๋กœ, ํ•œ ๊ตฌ์กฐ์ฒด๋ฅผ ํ•ด์ œ ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ..

๐ŸŒ‡โ”‚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 ์˜์—ญ์„ ํ™œ์šฉํ•˜์—ฌ ์ ‘๊ทผํ• ๊ฑฐ์˜ˆ..

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