일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 계정 탈취
- decap
- AttackGraph
- 넷크래프트
- 액티브스캐닝
- airdecap-ng
- Social Network in Game
- 패시브스캐닝
- 공격그래프
- Kublet
- 프로젝트
- Container
- 대학원
- 보안
- Mimikatz
- 강의
- recon-ng
- dnsenum
- cgroups
- SecurityMetric
- OpenID Connect
- ip forwarding
- davtest
- NMAP
- Chrome 작업관리자
- 무선채널
- OIDC
- Mac
- 화이트해커
- Shift + ESC
- Today
- Total
네른
2. FSB - Format String Bug / Double Free / Use After Free 본문
1. FSB - 포맷 스트링 버그
- printf 혹은 sprintf 와 같이 '포맷 스트링'을 사용하는 함수에서 발생할 수 있는 버그
- 사용자의 입력을 받아 출력할 때, 사용자가 일반적인 스트링이 아닌, '포맷 스트링'을 입력했다면?
- %x와 %s같은 값을 입력하는 경우 의도되지 않은 스트링이 출력될 것.
주로 사용되는 포맷 스트링
- %x : 16진수
- %p : 포인터
- %n : 작성된 총 바이트 수
- %s : 문자열
- %d : 10진수 등등
예시
- fgets(buf, sizeof(buf), stdin) 이후 printf(buf)를 하는 경우
- buf(buf의 내용을 가리키는 주소) / sizeof(buf) / stdin / buf의 내용 과 같이 스택이 구성됨
- 여기서 사용자가 buf에 AAAA %d %p %x 를 입력하게 되면
- buf의 내용(AAAA) / %d / %p / %x 의 순서대로 내용이 출력되기에
- AAAA / buf 길이 / stdin의 주소 / 41414141 이 출력됨
여기서 %n은 지금까지 출력된 값들을 세서 다음 메모리 값에 그대로 입력해줌
만약 위의 내용의 맨 끝에 %n이 있었다면, 0x41414141이라는 주소에 출력된 값이 덮어씌워짐
2. Double Free & Use After Free
- 힙에서 일어나는 메모리 취약점
- UAF의 경우, 할당된 힙 메모리를 해제한 이후, 다시 할당할 때 기존에 사용한 주소와 동일한 주소를 사용하여 발생하는 문제.
- 이는 구조적으로 효율성을 위해 해제된 메모리를 재사용하여 발생하는 것
- 이를 통해 이미 사용중인 다른 힙 메모리의 내용을 수정할 수도 있음
퀴즈 내용
- int의 최대값은 0x7FFFFFFF 이고, 이 값 + 1은 0x80000000이며 이는 곧 음수이다.
- 자료형의 최소 최댓값과 overflow에 대해서 생각해보자.
'강의 정리 > 드림핵 정리' 카테고리의 다른 글
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 |
1. BOF - Buffer OverFlow / OOB - Out Of Boundary / Off-by-one (0) | 2021.02.23 |