Format String
Format : 서식 또는 형식
Format Function
- Format String을 사용해 데이터를 원하는 형식으로 다루는 것이 가능한 함수
Format String
- 어떠한 형식이나 형태를 지정해 주는 문자열
- Format Function의 인자에 해당하며 텍스트나 Format Tag를 포함
ex. char str[20] = “LMS Pwnable”;
printf(”Hello %s World!”. str);
Format Tag
- %로 시작하며 출력할 값에 [옵션]들을 선택 적용해 출력 형태 설정
- 필수적인 최소한의 형태는 ‘%서식 지정자’
% [파라미터$] [플래그] [넓이] [.정밀도] [길이] 서식 지정자
- 파라미터 : 참조할 인자의 인덱스를 지정 (구분자 : $)
- 플래그 : 출력할 인자의 정렬 방식이나 부호를 지정
- 넓이 : 출력할 인자의 최소 너비를 지정
- .정밀도 : 출력할 인자의 자릿수를 지정
- 길이 : 출력할 인자의 정확한 크기를 지정
- 서식 지정자 : 출력할 인자의 자료형을 지정
Format Specifier
- 여러 API에서 가변 인자를 받아 처리하기 위한 Data Format
- 형식이나 형태를 지정하기 위한 %로 시작하는문자열
Format String Bug
Format String 취약점
- 서식 지정자가 필요로 하는 인자 개수와 함수에 전달될 인자 개수를 비교하는 루틴이 없음
- 대표적인 Format String 함수인 printf의 경우, 서식 지정자 개수에 따라 인자의 개수 결정
Format String Bug (FSB)
- Format String 함수의 취약점을 이용해 Format String Bug라는 오류를 발생시키는 공격 방법
- 사용자가 프로그램에 입력한 문자열 데이터가 Format String 명령으로 해석될 때 발생
Format String Bug 공격 기법
인자 적접 접근
- Format Tag의 파라미터 옵션과 구분자인 $를 사용해 원하는 인자에 직접 접근하는 공격
- “%(접근하려는 인자 번호)$(서식 지정자)”
- ex. “$3$s”, %10$05d…
short 쓰기
- short형인 서식 지정자 %hn을 사용하는 공격 (%n은 4byte의 int형, %hn은 2byte의 short형)
- int 범위를 넘어서는 수를 저장해야할 때 short로 나누는 방식
'Pwnable' 카테고리의 다른 글
| Heap Basic (0) | 2025.11.19 |
|---|---|
| Integer Overflow (0) | 2025.11.19 |
| Buffer Overflow (0) | 2025.11.19 |
| Pwnable Tools (0) | 2025.11.19 |
| Pwnable 방법론 (0) | 2025.11.19 |