일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- OpenID Connect
- OIDC
- NMAP
- 패시브스캐닝
- 프로젝트
- 넷크래프트
- ip forwarding
- Chrome 작업관리자
- davtest
- 계정 탈취
- 대학원
- Shift + ESC
- Container
- 무선채널
- 화이트해커
- 공격그래프
- Mac
- airdecap-ng
- 액티브스캐닝
- Mimikatz
- AttackGraph
- Kublet
- cgroups
- SecurityMetric
- 강의
- recon-ng
- decap
- dnsenum
- 보안
- Social Network in Game
- Today
- Total
네른
1. BOF - Buffer OverFlow / OOB - Out Of Boundary / Off-by-one 본문
초심으로 돌아가서 처음부터 다시 공부하자.
1. BOF, 버퍼 오버플로우 라고 불리우는 메모리 관련 취약점.
- 일반적으로 스택, 힙에 발생하는 취약점으로, 버퍼가 허용할 수 있는 양을 초과할 때 발생하는 취약점
- 각각을 스택 오버플로우, 힙 오버플로우 라고 부름
- 버퍼에 입력제한이나 검증등의 방지책이 없을 때 ret 영역을 덮어씌우는 공격이 가능
- *sfp는 스택 프레임 포인터로 쉽게 ebp 값이 저장되는 영역을 의미
스택 오버플로우는 주로 입력 길이에 대한 검증을 정확히 수행하지 않을 때 발생.
길이를 명시하는 함수를 쓰더라도, 버퍼와 길이간 검증은 필수.
2. OOB, 아웃 오브 바운더리 라고 불리우는 메모리 관련 취약점.
- 버퍼 범위 바깥의 인덱스에 접근할 때 발생
- 에러로도 있다. 동일한 이유이며 이를 이용하여 공격할 수 있는 상황이 있기에 취약점이 된 것.
- 대표적으로, 버퍼에 입력할 때 index 값을 지정하는 경우 발생 가능
: 사용자에게 index값을 입력하도록 한 후 해당 index에 값을 입력할 때
: %로 해결이 안된다. (buffer length가 10이라고 입력받은 index%10을 해도, 음수를 쓰면 된다)
- dreamhack OOB ex3의 경우 다음과 같이 풀이가 된다.
1. 4byte int의 표현 범위는 -2147483648 ~ 2147483647(-2^31~2^31-1)이다.
2. 즉 2147483648과 -2147483648은 동일 (1000 0000 0000 0000)
3. -2147483648 값을 입력하고, 해당 값에 -를 붙이더라도 결국 다시 -2147483648이 되는 것. (2147483648이라는 값은 표현 불가능)
4. 해당 값 %10을 하면 결국 -8이 된다.
3. Off-by-one
- 경계 검사에서 발생하는 취약점. 버퍼에 for문 돌릴 때, 인덱스 한개 잘못 넘어가거나 하는 경우. - for문에서 실수하는 경우가 대표적인데, 해당 버퍼 이후에 중요한 변수값이 있으면 위험할 수 있다.
'강의 정리 > 드림핵 정리' 카테고리의 다른 글
Stack Buffer Overflow (0) | 2022.02.15 |
---|---|
Calling Convention (0) | 2022.02.15 |
pwntools API 정리 (0) | 2022.02.11 |
orw shellcode (0) | 2022.02.11 |
2. FSB - Format String Bug / Double Free / Use After Free (0) | 2021.02.24 |