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 ๋ถ๋ถ๋ง ์ฑ์์ ๋๋ด๋ฉด ๋๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ret๋ฅผ get_shell์ address๋ก ํด๋ ๋ ๊ฑฐ ๊ฐ์๋ฐ pwn ์ฌ์ฉ์ ์ํ๊ณ ํด๋ณผ๊ฑฐ๋๊น
์ฃผ์์ ํฌ๊ธฐ 4byte๋ฅผ ๊ทธ๋ฅ ์ฑ์์๋ค
์ญ๋๊ธ์ผ๋ก ์ฌ์ด ๋ฌธ์ ์ค ํ๋์๋ค์
Exploit
์ค๋ช ..ํ ๋ถ๋ถ์ด ์๋ค์ ๊ตณ์ด ์๋ค๋ฉด
readํจ์์ if ์กฐ๊ฑด๋ฌธ์ ์ ๋ณด๋ฉด ์ทจ์ฝ์ ์ด ์กด์ฌํ๋๋ฐ, 0์ ์
๋ ฅ๋ฐ๊ฒ๋์์๋ 0 < 0 ๋ถ์ผ์นํ๋ฏ๋ก
์กฐ๊ฑด๋ฌธ์ ๊ฑด๋๋ฐ๊ฒ๋๊ณ , size -1์ ์งํํ์ฌ read(0, buf, 0 - 1); ์ด ๋๋ค.
read(0, buf, 0 - 1);
๊ทธ ์์ ์กฐ๊ฑด๋ฌธ์ ์ฐํํ๋ค๊ณ ํ๋ ๋ถ๋ถ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โSystem_Study > ๐โDreamhack_Hacking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Bypass SECCOMP-1 (0) | 2022.11.06 |
---|---|
tcache_dup2 (0) | 2022.11.06 |
tcache_dup (0) | 2022.11.06 |
validator (0) | 2022.11.06 |
cmd_center (0) | 2022.11.06 |