๐โSystem_Study/๐โDreamhack_Hacking
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 ๋ฌธ์ ํ์ด ๋ณดํธ๊ธฐ๋ฒ์ด ๊ฑฐ์ ์๋ค๊ณ ํ ์ ๋๋ค์..? ์ฐธ๊ณ ๋ก ์ด๋ฒ ๋ฌธ์ ๋ ๋ฐ์ด๋๋ฆฌ๋ง ์ฃผ์ด์ ์ด๋ ๊ฒ IDA๋ฅผ ์ฌ์ฉํ์ต๋๋น ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๊ฐ์ด ํ์ฑ๋์ด ์์ต๋๋ค emeset์ ํ ํ validate ํจ์๋ฅผ ์คํํ๋ค์ ๊ทธ ์ธ์๋ก๋ s์ 128์ ์ฃผ๊ณ ์ ๊ฐ ๋ฐ๋ณต๋ฌธ๋ง๋ค ์กฐ๊ฑด๋ฌธ์ด ์๋ค์ ์ฃผ์์ผ๋ก DREAMHACK์ด๋ผ๊ณ ์๋ ค์ฃผ๋ค์.. ๋ฆฌ๋ฒ์ฑ ๋ชปํ๋๋ฐ ๊ฐ์ฌํฉ๋๋ค ใ
ใ
์ฐ์ ์ธ์๋ก ๋๊ธด ๋ฐฐ์ด์ด DREAMHACK!์ผ๋ก ์์ํ๋ฉฐ, ์์ ํจ์์์ j = 11๋ถํฐ j < 0x128๋งํผ s์ ๊ฐ ๋ฌธ์๊ฐ ์์ด์ง๋์? ๋จผ์ ์
๋ ฅ ๊ฐ์ ๋ํด DREAMHACK! ๋ฌธ์์ด๊ณผ ํ ๋ฐ์ดํธ์ฉ ๋น๊ตํ๊ณ , 9 ๊ฐ์ ๋ฌธ์ ์ค ๋์ผํ์ง ์์ ๋ฌธ์๊ฐ ์๋ค๋ฉด exit ํจ์๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค. ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ..
๐โSystem_Study/๐โDreamhack_Hacking
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_overwrite ๋ฌธ์ ํ์ด ๋ชจ๋ ๋ณดํธ ๊ธฐ๋ฒ์ด ์ ์ฉ๋์ด ์๋ค์.. ์์ฐ Dangling Pointer๋ ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก์จ.. ์ฝ๋๊ฐ ์ํผํ๋ค์ Dangling Pointer๊ฐ ์๋ค๊ณ ๊ผญ ์ํํ ๋ถ๋ถ์ ์๋์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ์ฌ๊ธฐ์ ์ํํ๊ฒ ์ฃ Human์ด๋ Robot์ ๊ตฌ์กฐ์ฒด๋ก ๊ฐ ๊ตฌ์กฐ์ฒด ๋ณ์์ ํฌ๊ธฐ ๋์ ํ ๋น ํด์ ๋ฅผ ํ ์ ์์ต๋๋ค human_funcํจ์์ robot_func ํจ์๋ฅผ ์ดํด๋ณด๋ฉด, ๊ตฌ์กฐ์ฒด ๋ณ์๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น ์, ์ด๊ธฐํ X memset()ํ๋ผ๋ ์ด์ผ๊ธฐ๊ตฌ๋! ๋ผ๋ ๊ฑธ ํ์ฐธ ๋ค์ ์๊ฒ ๋ฌ์ต๋๋ค ์ ๋ ํ ๋นํด์ ํ๋ฉด ์์์ ์ด๊ธฐํ ๋๋์ค ์์๋๋ฐ.. ๊ทธ๋ผ Human ๊ตฌ์กฐ์ฒด์ Robot ๊ตฌ์กฐ์ฒด์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฏ๋ก, ํ ๊ตฌ์กฐ์ฒด๋ฅผ ํด์ ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ..
๐โSystem_Study/๐โDreamhack_Hacking
์ ๋ด์ฉ์ ํ์๋ก ์์ง๋ฅผ ํด์ผ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ์ดํดํ ์ ์์ผ๋ฉฐ, ์ค๊ณ ๋ฐ ๊ธฐ๋ณธ์ด ๋ฉ๋ต๋๋ค. Tcache Poisoning ๋ฌธ์ ํ์ด Full RELRO์ NX๊ฐ ๊ฑธ๋ ค์๋ ๋ชจ์ต์
๋๋ค. ์ฆ, hook overwrite ๊ณต๊ฒฉ์ ๊ณ ๋ คํ ๋ฒ ํ๊ตฐ์ Tcache Poisoning์ ํ์ฉ์ผ๋ก tcache๋ฅผ ์กฐ์ํด ์์ ์ฃผ์์ ์ฒญํฌ๋ฅผ ํ ๋น์ํค๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์
๋๋ค. ์ค๋ณต์ํจ ๋ฐฉ๋ฒ์ผ๋ก ์์์ ์ฌ์ฉํ ๋ฌ๋งํฌ์ธํฐ๋ ์ ๋ฐฉ์์ ํ์ฉ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.๋ฐ๋ผ์ ๊ณต๊ฒฉ์๋ ์ค๋ณต์ผ๋ก ์ฐ๊ฒฐ๋(FIFO ํ์์ ๋๋ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธํ์..๊ทธ๋์ ๊ณต๋ถํ๋ผ๊ณ ํ์๊น์?) frist /bin ๋ฑ์ด ์์ ๊ฐ์ ํ์์ ์ฒญํฌ๊ฐ ์์ ๊ฐ์ ํ์์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.๋ฐ๋ผ์ ์ค๋ณต์ผ๋ก ์ฐ๊ฒฐ๋ ์ฒญํฌ๋ฅผ ์ฌํ ๋น ์, ๊ทธ ์ฒญํฌ๋ ํ ๋น๋ ์ฒญํฌ์ด๋ฉด์ ๋์์ ํด์ ๋ ์ฒญํฌ..
๐โSystem_Study/๐โDreamhack_Hacking
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 ๋ฌธ์ ํ์ด ๋ 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 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 ๋ฌธ์ ํ์ด ๋ชจ๋ ๋ณดํธ ๊ธฐ๋ฒ์ด ์ ์ฉ๋์ด ์๋ค์.. ์์ฐ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์์๋๋ฉด ์ข์ ์ฉ์ด ํค์๋ Hooking: ์ด๋ค ํจ์, ํ๋ก๊ทธ๋จ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํํ๋ ค ํ ๋ ์ด๋ฅผ ๊ฐ๋ก์ฑ์ ๋ค๋ฅธ ์ฝ๋๊ฐ ์คํ๋๊ฒ ํ๋ ๊ธฐ๋ฒ. ๋๋ฒ๊น
, ๋ชจ๋ํฐ๋ง, ํธ๋ ์ด์ฑ์ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ๊ณต๊ฒฉ์์ ์ํด ํค๋ก๊น
์ด๋ ๋ฃจํธํท ์ ์์ ์ฌ์ฉ๋ ์ ์์. Hook Overwrite: ๋ฐ์ด๋๋ฆฌ์ ์กด์ฌํ๋ ํ
์ ๋ฎ์ด์จ์ ํน์ ํจ์๋ฅผ ํธ์ถํ ๋, ์
์์ ์ธ ์ฝ๋๊ฐ ์คํ๋๊ฒ ํ๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ด๋ จ๋ malloc, free, realloc๋ฑ์ ํจ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ํ
ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๊ณต๊ฒฉ์ ์ฌ์ฉ๋ ์ ์์. Full RELRO๋ฅผ ์ฐํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์. one_gadget: ์คํํ๋ฉด ์
ธ์ด ํ๋๋๋ ์ฝ๋ ๋ญ์น...
๐โSystem_Study/๐โDreamhack_Hacking
basic_rop_x86 ๋ฌธ์ ํ์ด NX์ Partial RELRO๊ฐ ๊ฑธ๋ ค์๋ค์ ๊ทธ๋ฆฌ๊ณ ์ฝ๋๋ฅผ ์ ๊ทผํด๋ณด๋ฉด Canary๋ ์ ์ฉ๋์ด ์์ง ์๋ค์ ๋คํ์ด์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ์ด์ ๋ด์ฉ์ด๋ ์ ์ฌํ ๋ฐฉ๋ฒ์ด๋ค์ read()ํจ์์ bof๊ฐ ๋ฐ์ํ๋๊น์ ๊ทธ๋ผ ์ค์ ๋ก ์ด๋ค ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋์๋์ง๋ ํ์ธํด๋ด
์๋ค. ์ค์ ๋ก๋ 0x44๋ก ์กํ์๋ค์ Exploit ์ค๊ณ ๊ทธ๋ผ ์ ํฌ๋ ์ด์ ์ ํ๋ ๊ฑฐ์ฒ๋ผ system()ํจ์์ ์ฃผ์๋ฅผ ์์๋ด์ด ์ต์ข
์ ์ผ๋ก system("/bin/sh") ํธ์ถ! ๊ทธ๋ฌ๊ธฐ ์ํด read()ํจ์์ write()๋ฅผ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ์ค์ ์ฃผ์๋ฅผ leakํ๋ ๋ฐฉ์์ ์ด์ ์ ๋ฐฐ์ ์ผ๋ฏ๋ก ์๋ตํ๊ฒ ์ต๋๋ค. ๊ทธ ๋ค์์ผ๋ก ์ ํฌ๋ rop chain์ ์ด์ฉํด overwirte ํด์ฃผ๊ณ ์ด๋ฒ์ bss ์์ญ์ ํ์ฉํ์ฌ ์ ๊ทผํ ๊ฑฐ์..