๐ฉ ์ฅ์
ํ์์ ๋น์ฉ์ด ์ ๊ฐ๋๋ค.๐ฉ ๋จ์
์ฌ๋ฌ ๋ฐ์ด๋๋ฆฌ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๊ฐ ์ฌ๋ฌ๋ฒ ์ด๋ฃจ์ด์ ธ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค.
๐ฉ ์ฅ์
ํจ์จ์ ์ด๊ณ ์์ฐ์ค๋ฌ์ด ๋งคํ์ด ๊ฐ๋ฅํ๋ค.๐ฉ ๋จ์
์ ์ ์ผ๋ก ๋งคํ ํ ๋๋ณด๋ค ๋๋ฆฌ๋ค.
PLT (Procedure Linkage Table) : ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ํ๋ก์์ ๋ฅผ ํธ์ถํ๋ ํ ์ด๋ธ
GOT (Global Offset Table) : PLT๊ฐ ์ฐธ์กฐํ๋ ํ ์ด๋ธ๋ก ํ๋ก์์ ์ ์ฃผ์๊ฐ ๋ค์ด์๋ค
์ฆ, PLT์ GOT๋ฅผ ์ฐธ์กฐํ์ฌ ํจ์๋ฅผ ๋์ ๋งํฌํ์ฌ ์ฌ์ฉํ ์ ์๋ค
PLT๋ฅผ ํธ์ถํ๋ฉด GOT๋ฅผ ์ฐธ์กฐํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ค์ ํจ์์ ์ฃผ์๋ฅผ ๊ตฌํ์ฌ ์คํํ๋ค
์ด๋ ํธ์ถ๋ ํจ์์ ์ฃผ์๋ GOT์ ์ ์ฅ๋์ด ๋ค์ ํธ์ถ์ ๋ฐ๋ก ์ฌ์ฉ๋๋ค
ASLR (Addres Space Layout Randomization) : ๋ฐ์ด๋๋ฆฌ๊ฐ ์คํ๋ ๋๋ง๋ค ์คํ, ํ, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ์์์ ์ฃผ์๋ก ํ ๋นํ๋ ๋ณดํธ ๊ธฐ๋ฒ
cat /proc/sys/kernel/randomize_va_space
๋ฅผ ํตํด ์ปค๋์์ ๋ณดํธ๋๊ณ ์๋์ง ํ์ธ ๊ฐ๋ฅํ๋ค
0 : No ASLR
1 : ์คํ, ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, vdso
2 : 1์ ์์ญ + brk์์ญ
NX (No-eXecute) : ์คํ์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ์ฐ๊ธฐ์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ถ๋ฆฌํ๋ ๋ณดํธ๊ธฐ๋ฒ
์คํ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ NX ๋ณดํธ ๊ธฐ๋ฒ์ด ์ ์ฉ๋๋ฉด Shell code๋ฅผ ์ฃผ์ ํ์ฌ ์คํํ ์ ์๋ค.