๐โSystem_Study/๐โDreamhack_Hacking
seccomp ๋ฌธ์ ํ์ด ๋ณดํธ๊ธฐ๋ฒ์ ์ค์ํ ์ ๋๋ก NX์ Canary.., Partial RELRO๊ฐ ์๋ ๋ชจ์ต ASLR์ ๋น์ฐํ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์๊ฒ ๋ค์.. ใ
์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ์ด ๋ ใ
์ด๋ฒ์ filter_list๊ฐ ์๋ strict๋ชจ๋๋ผ์ read, write,exit..์ ๋์ ์์คํ
์ฝ๋ง ๊ฐ๋ฅํฉ๋๋ค. ์ํคํ
์ฒ๊ฐ 64๋๊น ์ฝ๋ฒํธ๊ฐ ์ด๊ณผํ์ง ์์ผ๋ฉด ํธ์ถ์ด๋๊น.. 0x400..์ ๋ง์ถ๊ณ seccomp์ ์ฐํํ๋ ๊ฑด ์ ์๋ ๋ฏ ์ถ๋ค์ ๊ทธ๋์ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋์ค SECCOMP_MODE_STRICT์ ์ง์ค ๊ตฌ๊ธ๋งํ๊ฒฐ๊ณผ Linux seccomp Linux์ Process Sandboxing ๊ธฐ๋ฒ์ธ seccomp์ ๋ถ์ํ๋ค. ssup2.github.io seccomp(2) - Linux manual page sec..
๐โSystem_Study/๐โDreamhack_Hacking
Bypass SECCOMP-1 ๋ฌธ์ ํ์ด ๋ณดํธ๊ธฐ๋ฒ์ ์ค์ํ ์ ๋๋ก NX์ PIE, FULL ELRO๊ฐ ์๋ ๋ชจ์ต ASLR์ ๋น์ฐํ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์๊ฒ ๋ค์.. ใ
์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ ๋ sendbox๊ฐ ์๋ ๋ชจ์ต seccomp๊ฐ ์นํ ๊ฑธ๋ ค์๋๊ตฐ์ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๊ถํ์ด ์๋ ํ์ด์ง๋ฅผ ํ ๋นํ๊ณ ์ด์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ ๊ฐ์ ์ฌ์ฉํ๋ค.. sendbox์ ํจ์์ allow์ ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋ฐํ๋ค๋ฉด execve์ open, write๊ฐ ์๋๋ค์.. ์ ๋ง์ ์ธ๋ฐ? Exploit ์ค๊ณ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์์คํ
์ฝ์ด ์๋์ง ํ์ธํด์ผํฉ๋๋ค. ์์คํ
์ฝ์ ๋ํ ์ ๋ณด๋ ์๋ ๋งํฌ์ Linux System Call Table for x86 64 · Ryan A. Chapman Linux 4.7 (pulled from github.com/to..
๐โSystem_Study/๐โDreamhack_Hacking
tcache_dup2 ๋ฌธ์ ํ์ด ์ด์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ๋ ๋๊ฐ๊ณ ์ฝ๋๋ง ์ด์ง ๋ฐ๋ ๋ชจ์ต์ผ๋ก ์ด์ ๊ณผ ๊ฐ์ด ์คํํ๋ฉด ๋ฌดํ๋ฃจํ์ ๋น ์ง๊ธฐ์ ํจ์๋ฅผ ํตํด p64 ๋ฐ์ดํฐ ์ ์ก ๊ณผ์ ์์ ์ ์กํ ๋ฐ์ดํฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ฐํ๋ ๋ฌธ์ ๊ฐ ์์๋ค์ ์คํํด๋ณด๋ฉด์ ๋ง์ด ๋งํ๋๋ฐ ๊ทธ ๋ถ๋ถ๋ง ์๋์ผ๋ก ๋ฐ๊ฟ์ ํ๋ฉด ๋ ๋ฏ ํฉ๋๋ค. Exploit ์ค๊ณ ๋ค๋ฅธ ๋ถ๋ถ๋ ๋ง์ฐฌ๊ฐ์ง๊ณ ์ถ๊ฐ์ ์ธ ์ธ์๋ฅผ ์
๋ ฅํ์ฌ ํ์ธํ๋ ๋ถ๋ถ๊ณผ modify๊ฐ ์ถ๊ฐ๋ ๋ชจ์ต์
๋๋ค. ํ์ง๋ง ๊ทธ๋ฌํ ๋ถ๋ถ์ idx๊ฐ 8์ ์ด๊ณผํ๋ฉด ์๋๋ค.. ์ค๋ช
์ ์ด์ ๋ด์ฉ์์ ๋ฌด์ง ๋ง์ด ํ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ด์ ์ฝ๋๋ฅผ ํ์ฉํด์ ์์ฑํด๋ณผ๊น์? ๊ณต๊ฒฉ๊ธฐ๋ฒ์ ์ ๊ทผ ๋ฐฉ์๋ ์ ์ฌํ๋ฏ๋ก.. Exploit ์์์ ๋ค ์ค๋ช
ํ์ผ๋ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ๋ง ๊ฐ๋จํ ์ค๋ช
ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ด ๋ถ๋ถ์ DFB์ ๋ถ๋ถ์ ๊ธฐ๋ณธ์ด๋ฏ๋ก..
๐โSystem_Study/๐โDreamhack_Hacking
sint ๋ฌธ์ ํ์ด ์ด์ ์ฌ๊ธฐ์ ๊ธฐ๋ณธ์ ์ธ ๋ณดํธ๊ธฐ๋ฒ์ด ๊ฑธ๋ ค์์ต๋๋ค NX์ Partial RELRO์ด์ฃ .. ๋ณด์๋ฉด.. Type Error๋ฅผ ์ ๋ฐํ๋ผ๊ณ ํ๋๋ฐ.. 38๋ฒ ๋ผ์ธ์ ๊ฒ์ฌ์์ 0์ ๊ฒ์ฌ๋ฅผ ์ํ๋ ๋ถ๋ถ์ ํ์ธ ์ฆ, ์
๋ ฅ ํ๋๋ฅผ ๋์ ์ ์์ ์ ์๊ธฐ์ payload์ ์
๋ ฅ์ด ์์ ๋ก์์ง๋ค! ์ฆ, 0์ ๋ฃ๊ณ bof๋ฅผ ์ผ์ผ์ผ์ get_shell์ ํ๋๊ฑฐ์ฃ ๋ํ signal์ด ๋ฌด์จ ํจ์์ผ๊น ๊ฒ์ํด๋ณด๋๊น.. Segment fault ์ฆ ๊ตฌ๋ฌธ ์ค๋ฅ ๋๋ฉด get_shell์ ์คํํ๋ค์ ๊ทธ๋ผ ์ด๋ฒ์๋ pwn๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ ์ ์๊ฒ ๋ค์? Exploit ์ค๊ณ esp๊ฐ 0x104๋ก ์กํ์๋ค์.. 256byte๋ก ํ ๋น๋ฌ๋๋ฐ ๊ทธ๋ผ 0x100์ด์ฌ์ผํ๋๋ฐ ์ต์ ํ ๋จ๊ณ์์ 0x104๋ก ๋์์ผ๋ฏ๋ก sfp์ ret ๋ถ๋ถ๋ง ์ฑ์..
๐โ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 ๊ตฌ์กฐ์ฒด์ ํฌ๊ธฐ๋ ๊ฐ์ผ๋ฏ๋ก, ํ ๊ตฌ์กฐ์ฒด๋ฅผ ํด์ ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด๋ฅผ ..