br0nzu

Introduction to Operating System

컴퓨터 μ‹œμŠ€ν…œ 4가지 κ΅¬μ„±μš”μ†Œ 컴퓨터 μ‹œμŠ€ν…œ κ΅¬μ‘°λŠ” ν•˜λ“œμ›¨μ–΄, 운영체제, ν”„λ‘œκ·Έλž¨, μ‚¬μš©μžλ‘œ 크게 λ„€κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. ν•˜λ“œμ›¨μ–΄: 기본적인 μ»΄ν“¨νŒ… μžμ›μ„ μ œκ³΅ν•œλ‹€.(ex. CPU, Memory, I/O Devices λ“±..) 운영체제: ν•˜λ“œμ›¨μ–΄μ˜ μ‚¬μš©μ„ κ΄€λ¦¬ν•˜κ³  μ‘°μ •ν•œλ‹€. ν”„λ‘œκ·Έλž¨: νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ μ„€κ³„λœ μ†Œν”„νŠΈμ›¨μ–΄ ν”„λ‘œ...

Format String Bug

Format String Bug Format String Bug(FSB)λŠ” 포맷 슀트링이 ν•„μš”λ‘œ ν•˜λŠ” 인자의 κ°œμˆ˜μ™€ ν•¨μˆ˜μ— μ „λ‹¬λœ 인자의 개수λ₯Ό λΉ„κ΅ν•˜λŠ” 루틴점을 μ•…μš©ν•˜μ—¬ λ°œμƒν•˜λŠ” 버그이닀. 이λ₯Ό μ•…μš©ν•˜λ©΄ ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ˜ λ ˆμ§€μŠ€ν„°μ™€ μŠ€νƒμ„ 읽을 수 있고, μž„μ˜ μ£Όμ†Œ 읽기 및 μ“°κΈ°λ₯Ό ν•  수 μžˆλ‹€. 포맷 슀트링 λ²„κ·ΈλŠ” 포맷 μŠ€νŠΈλ§μ„ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  ...

Out of bounds

Out of bounds Out of boundsλŠ” λ°°μ—΄μ˜ μž„μ˜μ˜ μΈλ±μŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” 취약점이닀. OOBλŠ” μš”μ†Œλ₯Ό μ°Έμ‘°ν•  λ•Œ, 인덱슀 값이 μŒμˆ˜κ±°λ‚˜ λ°°μ—΄μ˜ 길이λ₯Ό λ²—μ–΄λ‚  λ•Œ λ°œμƒν•œλ‹€. OOBλ₯Ό λ°©μ§€ν•˜λŠ” 것은 μ „μ μœΌλ‘œ 개발자의 λͺ«μ΄λ‹€. μ™œλƒν•˜λ©΄ μ»΄νŒŒμΌλŸ¬λŠ” λ°°μ—΄μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λŠ” 인덱슀λ₯Ό μ‚¬μš©ν•΄λ„ μ•„λ¬΄λŸ° κ²½κ³ λ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€. μ•„λž˜ μ˜ˆμ‹œ...

PIE & RELRO

PIE PIE(Position Independent Executable)λŠ” λ¬΄μž‘μœ„ μ£Όμ†Œμ— 맀핑돼도 μ‹€ν–‰ κ°€λŠ₯ν•œ μ‹€ν–‰ νŒŒμΌμ΄λ‹€. PIEλŠ” μž¬λ°°μΉ˜κ°€ κ°€λŠ₯ν•˜λ―€λ‘œ, ASLR이 적용된 ν™˜κ²½μ—μ„œλŠ” μ‹€ν–‰ νŒŒμΌλ„ λ¬΄μž‘μœ„ μ£Όμ†Œμ— μ μž¬λœλ‹€. λ°˜λŒ€λ‘œ, ASLR이 μ μš©λ˜μ§€ μ•Šμ€ ν™˜κ²½μ—μ„œλŠ” PIEκ°€ 적용된 λ°”μ΄λ„ˆλ¦¬λ”λΌλ„ λ¬΄μž‘μœ„ μ£Όμ†Œμ— μ μž¬λ˜μ§€ μ•ŠλŠ”λ‹€. // Name: te...

tmux μ‚¬μš©λ²•

tmuxλž€? tmux(Terminal Multiplexer)λŠ” μ„Έμ…˜μ„ 톡해 터미널 화면을 μ—¬λŸ¬κ°œλ‘œ λΆ„ν• ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλŠ” 도ꡬ이닀. tmuxλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 μš©μ–΄λ₯Ό μ•Œμ•„μ•Ό ν•œλ‹€. Sessions: 독립적인 μž‘μ—… ν™˜κ²½, μ„Έμ…˜μ„ 톡해 μ—¬λŸ¬ ν”„λ‘œμ νŠΈλ‚˜ μž‘μ—…μ„ λΆ„λ¦¬ν•˜μ—¬ 관리할 수 μžˆλ‹€. Windows: ν•˜λ‚˜μ˜ μž‘μ—… 곡간, κ°œλ³„ ν„°...

PLT & GOT

Library & Link에 μ΄μ–΄μ„œ PLT와 GOT μ„€λͺ…을 ν•˜κ² λ‹€. PLT & GOT PLT(Procedure Linkage Table)λŠ” 동적 링컀가 곡유 라이브러리의 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•œ μ½”λ“œκ°€ μ €μž₯λ˜μ–΄ 있고, GOT(Global Offset Table)λŠ” 동적 링컀에 μ˜ν•΄ 곡유 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ ν˜ΈμΆœν•  ν•¨μˆ˜μ˜ μ£Όμ†Œκ°€ μ €μž₯λ˜μ–΄ μžˆλ‹€. 즉...

Library & Link

라이브러리 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” 컴퓨터 μ‹œμŠ€ν…œμ—μ„œ, ν”„λ‘œκ·Έλž¨λ“€μ΄ ν•¨μˆ˜λ‚˜ λ³€μˆ˜λ₯Ό κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•  수 있게 ν•œλ‹€. 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같은 이점이 μžˆλ‹€.(Cμ–Έμ–΄ κΈ°μ€€) 컴파일 μ‹œκ°„ 단좕 λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€. μ†ŒμŠ€μ½”λ“œλ₯Ό 보호 / λΉ„κ³΅κ°œν•  수 μžˆλ‹€. 링크 λ§ν¬λŠ” 컴파일의 λ§ˆμ§€λ§‰ λ‹¨κ³„λ‘œ, 호좜된 ν•¨μˆ˜μ™€ μ‹€μ œ 라...

ASLR & NX(DEP)

ASLR ASLR(Address Space Layout Randomization)은 λ°”μ΄λ„ˆλ¦¬κ°€ 싀행될 λ•Œλ§ˆλ‹€ μŠ€νƒ, νž™, 곡유 라이브러리 등을 μž„μ˜μ˜ μ£Όμ†Œμ— ν• λ‹Ή(μ£Όμ†Œ + @)ν•˜λŠ” λ³΄ν˜ΈκΈ°λ²•μ΄λ‹€. ASLR은 μ»€λ„μ—μ„œ λ³΄ν˜Έν•˜λŠ” 기법이며 λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ ν‚€κ³  끌 수 μžˆλ‹€. On Conservative Randomization + b...

Stack Canary

μŠ€νƒ μΉ΄λ‚˜λ¦¬(Stack Canary)λŠ” ν•¨μˆ˜μ˜ ν”„λ‘€λ‘œκ·Έμ—μ„œ μŠ€νƒ 버퍼와 λ°˜ν™˜ μ£Όμ†Œ 사이에 μž„μ˜μ˜ 값을 μ‚½μž…ν•˜κ³ , ν•¨μˆ˜μ˜ μ—ν•„λ‘œκ·Έμ—μ„œ ν•΄λ‹Ή κ°’μ˜ λ³€μ‘°λ₯Ό ν™•μΈν•˜λŠ” 보호 기법이닀. μΉ΄λ‚˜λ¦¬ 값이 λ³€μ‘°κ°€ 되면 ν”„λ‘œμ„ΈμŠ€λŠ” κ°•μ œ μ’…λ£Œλœλ‹€. μΉ΄λ‚˜λ¦¬ 뢄석 μ•„λž˜ μ½”λ“œλ₯Ό 기반으둜 μΉ΄λ‚˜λ¦¬λ₯Ό λΆ„μ„ν•œλ‹€. #include <unistd.h> int main() ...