=> ์ฃผ์ด์ง ๋ฒํผ๋ณด๋ค ๋ง์ ๊ฐ์ ์ ๋ ฅ ๋ฐ์ ์นด๋๋ฆฌ๋ก ์ค๋ฒํ๋ก์ฐ๋๋ฉด ํ๋ก๊ทธ๋จ์ด ์คํ๋์ง ์๋๋ค.
[ Stack Canary ]
- ํจ์ ์ง์ ์ ์คํ์ SFP(Save Frame Pointer)์ return address ์ ๋ณด๋ฅผ ์ ์ฅํ ๋,
- ์ด ์ ๋ณด๋ค์ด ๊ณต๊ฒฉ์์ ์ํด ๋ฎ์ด์์์ง๋ ๊ฒ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด
- ์คํ ์์ ๋ณ์๋ค์ ๊ณต๊ฐ๊ณผ SFP ์ฌ์ด์ ํน์ ํ ๊ฐ์ ์ถ๊ฐํ๋ ๊ฐ.
- Stack Canary๊ฐ์ ๋ณ์กฐ ์ ๋ฌด์ ๋ฐ๋ผ Buffer Overflow๋ฅผ ํ์งํ๊ธฐ ๋๋ฌธ์
- ๊ธฐ์กด์ ๊ฐ๊ณผ ๋ค๋ฅธ ์ ๊ฒฝ์ฐ bof๊ฐ ํ์ง ๋์ด return address๊ฐ ๋ณ์กฐ๋์ง ์๊ณ ์ข ๋ฃ๊ฐ ๋ฉ๋๋ค.
=> Stack Cananry์ ์กด์ฌ์ด์ .
Buffer overflow - Heap based
- Heap์ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ ์ฌ์ฉ๋จ.
- Stack based buffer overflow์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋์ด access/overwriteํ๋ค๋ ์ ์ ์ ์ฌ.
- ๋จ, SFP๋ RET๊ฐ ์กด์ฌํ์ง ์์.
- ์ฃผ๋ก overwriteํ ๋์.
- Virtual Function Table
- Function Pointer
- Class Object/Structure Memory
- Virtual Function Table
- Class ๋ฉค๋ฒ ํจ์ ์ค, 1๊ฐ ์ด์ virtual ๋ฉ์๋๋ฅผ ํฌํจ๋๋ class ์ ์์ฑ.
- ๋ณดํต `this`์ +0 ์คํ์ .
auto *object = new Object();
//object ์ ๋ฉ๋ชจ๋ฆฌ corruption
object → method1();
728x90
':: BoB 11๊ธฐ ๐ฉ > Topics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ vuln ] - [ Type Confusion, Use After Free ] (0) | 2022.07.15 |
---|---|
[ vuln ] - [ Integer overflow ] (0) | 2022.07.15 |
[ vuln ] - [ Buffer overflow, bof, ] (0) | 2022.07.15 |
[ vuln ] - [ Time of Check to Time of Use(toctou), Race condition ] (0) | 2022.07.15 |
[ Cryto ] - AES ์ํธ (0) | 2022.07.13 |
๋๊ธ