728x90
What is Pwnable?
Basic System Hacking โถ Wanna get /bin/sh(shell)
shell?
:์ฌ์ฉ์์ ์ปค๋ ๊ฐ์ ์ธํฐํ์ด์ค ์ญํ
- ๋ช ๋ น์ด์ ์ปค๋์ด ๋ํ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๋ ์ผ์ข ์ ์ธํฐํ์ด์ค
- ๋ช ๋ น์ด ํด์๊ธฐ
- ์ ์ ๊ฐ ์ ธ(๋ช ๋ น์ด ํด์๊ธฐ)์ ๋ช ๋ น์ ์ ๋ฌํ๋ฉด ์ ธ์ด ์ปค๋ํํ ๋ถํํ๊ณ , ์ปค๋์ด ๋ด๋ถ์ ์ธ ์์ ์ ์คํํ ํ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ ธ์ ํตํด ์ ์ ์๊ฒ๋ก ์ ๋ฌํ๋ค.
- ์ฐธ๊ณ ์๋ฃ
Shell์ ํ์ทจํ์ ๋ ์ํํ ์ด์
- /etc/passwd ํ์ผ: ์ฌ์ฉ์ ์ ๋ณด ์ ์ฅ๋ ํ์ผ (root๋ง ์์ ๊ฐ๋ฅ)
- /etc/shadow ํ์ผ: ์ฌ์ฉ์ PW ํด์๊ฐ์ด ์ ์ฅ๋ ํ์ผ
- $algorithm_id$salt$encrypted_passwd
Architecture & Register
x86-64 Architecture
- ISA: CPU์ ๋ช ๋ น์ด์ ๋ํ ์ค๊ณ
- n bit Architecutre
- WORD: CPU๊ฐ ํ ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ (ex: bus ๋์ญํญ)
- 32bit ๊ตฌ์กฐ(x86), 64bit ๊ตฌ์กฐ(x86-64, x64)
x86 vs x64
๋ฒ์ฉ ๋ ์ง์คํฐ
๋ฒ์ฉ ๋ ์ง์คํฐ ์ฌ์ฉ ์์
- 64bit ํ๊ฒฝ์์๋ ๋ ์ง์คํฐ๋ฅผ ํจ์์ ์ธ์๋ก ์ ๋ฌ
- read(0, 0x7f2...000, 0x1000) // rdi, rsi, rdx
๋ ์ง์คํฐ ์ ๋ณด ํ์ธํ๊ธฐ ๋ฐ ๋ ์ง์คํฐ ํธํ
Linux Memory Layout
- ์ฝ๋ ์ธ๊ทธ๋จผํธ(ํ ์คํธ ์ธ๊ทธ๋จผํธ): ์ฝ๋ ์ ์ฅ (R,X)
- ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ(data, rodata): ์์, ์ ์ญ ๋ณ์์ ์ฅ (R, W)
- BSS ์ธ๊ทธ๋จผํธ: ์ด๊ธฐํ๋์ง ์์ ๋ณ์ ์ ์ฅ (์ด๊ธฐ์ ๋ค 0์ผ๋ก ์ด๊ธฐํ๋จ)
- ํ ์ธ๊ทธ๋จผํธ: malloc ๋ฑ์ผ๋ก ๋์ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ
- ์คํ ์ธ๊ทธ๋จผํธ: ์ง์ญ๋ณ์, ๋ ์ง์คํฐ, ํ๊ฒฝ๋ณ์ ์ ๋ณด ๋ฑ ์ ์ฅ
*์ฝ๋์์ญ → ์คํ์์ญ์ผ๋ก ๊ฐ์๋ก ์ฃผ์๊ฐ ๋์์ง๋ค.
์ธ๊ทธ๋จผํธ ๋ณ ๊ถํ ํ์ธ
Calling Convention
Stack Frame?
- ํจ์๊ฐ ํธ์ถ๋ ๋, ๊ทธ ํจ์๋ง์ ์คํ ๊ณต๊ฐ์ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์๊ธฐ๋ ๊ณต๊ฐ
cdecl
- x86 (32bit Architecture)์์ ์ฌ์ฉํ๋ ํจ์ ํธ์ถ ๊ท์ฝ
- callee๊ฐ ์๋ caller๊ฐ '์ธ์'๋ฅผ ์ ๋ฆฌ
sysv
- x64 (64bit Architecture)์์ ์ฌ์ฉํ๋ ํจ์ ํธ์ถ ๊ท์ฝ
- 6๊ฐ์ ์ธ์๋ฅผ RDI, RSI, RDX, RCX, R8, R9์ ์์๋๋ก ์ ์ฅํ์ฌ ์ ๋ฌ. (๋ ๋ง์ ์ธ์๋ฅผ ์ฌ์ฉํด์ผ ํ ๋๋ ์คํ์ ์ถ๊ฐ๋ก ์ด์ฉ)
- callee prolog
- callee epilog
- Caller์์ ์ธ์ ์ ๋ฌ์ ์ฌ์ฉ๋ ์คํ์ ์ ๋ฆฌ.
- ํจ์์ ๋ฐํ ๊ฐ์ RAX๋ก ์ ๋ฌ
Stack frame์ ๋ณํ ๊ณผ์
GDB
ELF
- ๋ฆฌ๋ ์ค ์คํํ์ผ ํ์ ELF(Executable and Linkable Format)
- ELF๋ ํค๋์ ์ฌ๋ฌ ์น์
๋ค๋ก ๊ตฌ์ฑ
- ํค๋: ์คํ์ ํ์ํ ์ ๋ณด๋ค
- ์น์ : ์ปดํ์ผ๋ ๊ธฐ๊ณ์ด ์ฝ๋, ํ๋ก๊ทธ๋จ ๋ฌธ์์ด ๋ฑ์ ์ฌ๋ฌ ๋ฐ์ดํฐ
'EVI$ION > 7th' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[EVI$ION] #4 - Reversing 1 (0) | 2024.11.07 |
---|---|
[EVI$ION] #3 - Digital Forensic Assignment (5) | 2024.10.06 |
[EVI$ION] #2 - Web Hacking Assignment (1) | 2024.09.26 |
[EVI$ION] #1 - Web Hacking Assignment (1) | 2024.09.19 |