๐โSystem_Study/๐ชโPwnable.kr
collision_WriteUp ๋ณด์๋ฉด.. ์ด๋ฒ์ ์๋น ๊ฐ MD5 hash์ ์ด์ฉํด์ ์ถฉ๋๋ ํ๋ฃจ๋ฅผ ๋ง๋ค์์ด? ๋๋ ์ด๋ฐ๊ฑธ ์ํด์! ๋ผ๋ ๊ฑฐ ๊ฐ์๋ฐ.. ๋ญ.. ํด๋น C file์ ์ดํด๋ณด๋ฉด.. hashcode์ 0x21DD09EC๋ก ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ํต์ฌ์ check_password์
๋๋ค. ๋๋จธ์ง๋ ์ธ์๋ฅผ 2๊ฐ.. ์ฆ 1์ด์ ๋ฃ์ผ์๊ณ ์ฒซ ์ธ์๋ฅผ ๋ฃ์์๋ ๊ธธ์ด๊ฐ 20์ค..๋ก ๋ง์ถฐ์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ check_password์ ๋ณ์กฐ๋ ์ธ์์ ์ hashcode์ ๋น๊ตํฉ๋๋ค. ์ฆ, ์ธ์๊ฐ์ด 20์ด์ฌ์ผํ๋ฉฐ, hashcode์ check_password์ ํจ์๋ฅผ ๊ฑฐ์น ๊ฐ์ด ๊ฐ์์ผํฉ๋๋ค. Exploit design ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, IP(argv[1]์ ์ธ์๊ฐ)์ ๋ฐ์์ 5๊ฐ๋ก ์ชผ๊ฐ์ ๋๊ฐ์ ๊ฐ์ 5๋ฒ int(4by..
๐โSystem_Study/๐ชโPwnable.kr
fd_WriteUp ๋ณด์๋ฉด.. ํํ(์๋น ?)๊ฐ ์ ๋ฌผ์ ๋ณด์ฅํด์ ๊ฐ์ ธ์์ด์! ์ด์ด๋ณผ๊น์? ๋ผ๊ณ ํฉ๋๋ค. ๋ฐ์ ์ด๊ฒ์ ์์
์ ๋๋๋ฆฌ๋ ๊ฑฐ๊ณ ๋๊ฐ ํ์ํ๊ฑด ์ด์ง์๋ผ๊ณ ํฉ๋๋ค... ํ์ผ์ ๋ฐ์์ ์ด์ด๋ณด๋๊น.. ๋ฐ์ด๋๋ฆฌ ํ์์ผ๋ก ๊ทธ๋ฅ ์ด๋ฉด ๋ง ๊นจ์ ธ์ ๋์ค๊ฒ ์ฃ ๊ทธ๋ผ ์ด๊ฑธ ๋ณต์ํด๋ด
์๋ค. ์ด๊ฑด ๊ทธ๋ผ.. ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ์ด๊ฒ ๊ตฐ์(์ ๋ชปํ๋๋ฐ ใ
) ์ผ๋จ hex๋ก ๋ฐ๋ก ํ์ธํด๋ด
์๋ค. ELF(๋ฆฌ๋
์ค ์คํ)์ด ๋๊ฐ๊ฐ ์ค๋ณต๋๋ฉฐ ๋ฐ์ UPX!๋ผ๊ณ ํ๋๊ฒ ์กด์ฌํฉ๋๋ค. ๊ทธ๋ผ ์์ถ์ด ๋์๊ตฌ๋.. ๋ผ๊ณ ๋๋์ด ์ค๋๊ตฐ์ ๊ทธ๋ผ UPX๊ฐ ๋ฌด์์ธ์ง ์์๋ณผ๊น์? UPX(Ultimate Packer for eXecutables)๋ก์จ ์ฌ๋ฌ OS์์ ์๋ง์ ํ์ผ ํฌ๋งท์ ์ง์ํ๋ ์คํ ์์ค ์คํ ํ์ผ ์์ถ ํ๋ก๊ทธ๋จ์
๋๋ค. GitHub - upx/upx: UP..
๐โSystem_Study/๐ชโPwnable.kr
bof_WriteUp ๋๋๊ฐ ๋งํ์ด์ bof๊ฐ ์ผ๋ง๋ ์ผ๋ฐ์ ์ธ ์ํํธ์จ์ด ์ทจ์ฝ์ ์ด๋ผ๊ณ ์ ๋ง๋์? ๋ผ๋๋ฐ.. ์๋ฌด๋๋ ๋ณด์ ์ทจ์ฝ์ ์ฒซ ์ค์ต์ด bof์ธ ๊ฒ์ ๋ณด๋ฉด ์ ๋ ๊ณต๊ฐํฉ๋๋ค.(๋ชจ๋ ๊ฒ ์ฌ๊ธฐ์ ์์..) ๋ณด์๋ฉด ์ ๋ฐ์์ผ๋ก ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด ๋ฉ๋๋ค. ๋ณดํธ๊ธฐ๋ฒ์ด.. bof๋ง ์ฐ๋ผ๊ณ ํ์๋๊ตฐ์.. ์ฝ๋๋ฅผ ๋ณด์๋ฉด func์ ํค ๊ฐ์ ๋ฏธ๋ฆฌ ๋ฃ๊ณ 8๋ฒ ๋ผ์ธ์.. ์กฐ๊ฑด๋ฌธ์์ ๋น๊ตํฉ๋๋ค. ๊ทผ๋ฐ ์์์ gets์์ ํฌ๋ฉง ์ค์ ๊ณผ ํฌ๊ธฐ๋ฅผ ๋ช
์ํ์ง ์์๊ธฐ ๋๋ฌธ์ bof๊ฐ ๋ฐ์ํฉ๋๋ค. Memory Corruption: Stack Buffer Overflow ์คํ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ(Stack Buffer Overflow) ์ธ๊ณ ์ต์ด์ ์์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ชจ๋ฆฌ์ค ์๋ ์ด ๊ณต๊ฒฉ์ ํตํด ์ ํ๋จ ๋ณด์ ๊ณต๋ถ๋ฅผ ๋ชจ๋ฅด๋ ๊ฐ๋ฐ์๋ ์๋งํผ ์ ๋ช
ํ๊ณ ์ญ์ฌ..
๐โSystem_Study/๐โDreamhack_Hacking
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๋ 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
_rtld_global ๋ฆฌ๋
์ค ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ํ๋ก๊ทธ๋จ์ ๋ช
์๋ ์ฝ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์ฐ๋ฆฌ์๊ฒ ์ถ๋ ฅ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด ํ๋ก์ธ์ค๋ก ๋ฑ๋ก ์ ํ๋ก๊ทธ๋จ์ ๋ช
์๋ ์ฝ๋๋ฟ๋ง ์๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ณ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ฌ์ญ์ ํ ๋นํ๋ ๋ฑ์ ๋ค์ํ ์ฝ๋๊ฐ ๋ก๋์ ์ํด ์คํ๋ฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ๋ฑ๋ก๋๊ฑฐ๋ ์ข
๋ฃ ์ ์ฐ์ด๋ ๋ณ์์ ์์ญ์ ์ ์ ์๋ค๋ฉด ๋ค์ํ ๋ฐฉ์์ ๊ณต๊ฒฉ ๊ธฐ๋ฒ ๊ฐ๋ฐ! ๊ทธ๋ฌ๋ฏ๋ก ์ ํฌ ๋ณด์์ชฝ์์ ์ด๋ฐ ๊ตฌ์กฐ์ ๊ตฌ๋์ ์ดํดํด์ผํฉ๋๋ค ๊ฐ์ด ์์๋ด
์๋ค. HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค __GI_exit ์์ ์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ๋ณ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํX ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค. ์ข
๋ฃ์์ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ฅด๋ ๋ง์ ์ฝ๋๋ค์ด ๋ด๋ถ์ ์ผ๋ก ์คํ๋๋๋ฐ, ํ๋ฒ ์ดํด๋ด
์๋ค. ์ผ๋จ main ํจ์ ๋ด ๋ฆฌํดํ๋ ๋ช
๋ น์ด์ ๋ธํฌ๋ฅผ ์ค์ ..
๐โSystem_Study/๐โDreamhack_Hacking
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..