포맷 스트링 취약점은 무엇입니까?
형식 문자열 취약점이 무엇인지 이해하려면 먼저 포맷 스트링 무엇인지 알고 있어야합니다. 형식 문자열을 어떻게해야 형식 번호는 C 컴파일러와 이야기의 지문을 때 그들의 방법입니다.
포맷 문자열은 C
은 C 프로그래밍 언어에는 인자로 문자열을 받아들일 수있는 형식의 기능에는 여러가지가있습니다. 이러한 기능, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, printf fprintf, 시스템 로그와 다른 사람이 포함됩니다.
이 중 가장 일반적인 printf입니다. printf의 사용법입니다 :
printf 형식 [인자 ...]
printf [인자 ...] 형식에 의해 지정된 형식의 값을 출력합니다.
printf를 호출하는 예제입니다 :
printf ( "이 지역 코드 : % d 개 \ n", 303);
지원하는 포맷을 지정 하나 C 컴파일러는 다음에 이르기까지 차이가있습니다. 아래는 FreeBSD에서 지원하는 형식을 지정 :
% d 개 서명 진수 문자열을 정수로 변환합니다. % u 개 서명되지 않은 10 진수 문자열을 정수로 변환합니다. % i 개 서명 진수 문자열을 정수로 변환; 정수는 10 진수에서있을 수있는 최고의 0 () 또는 16 진수에서 선도 0x ()과 진수. % O를 서명되지 않은 진수 문자열을 정수로 변환합니다. % x 나 % 엑스 서명되지 않은 16 진수 문자열로, x와 대한 또 숫자를 사용하여 정수로 변환 또 엑스 0123456789abcdef '' ''에 대한) 0123456789ABCDEF. % C 그것을 상징하는 유니 코드 문자를 정수로 변환합니다. % 아니 변환; 그냥 문자열을 삽입합니다. % F 양식 xx.yyy의 서명을 10 진수 문자열로 부동 소수점 변환 - 여기서 Y의 정밀도로 (기본값 : 결정됩니다의 수를 6). 만약있다면 안돼 소수점 정밀도 0 출력합니다. % e 또는 % 전자 과학적 표기법에 양식 x.yyye에 떠있 - 소수점 숫자로 변환 + - ZZ, 여기서 Y의 정밀도로 (기본값 : 결정됩니다의 수를 6). 만약있다면 안돼 소수점 정밀도 0 출력합니다. e. 확인 후 이메일을 대신 전자의 경우 양식을 인쇄되어 사용됩니다 % G 또는 % G 조 만약 지수 -4 미만 또는 이상 또는 동등 정밀 다음 % e 또는 % 중에 떠다니는 - 소수점 숫자로 변환 큽니다 그렇지 않으면 %를 F.로 변환 소수점과 후행 0 뒤진 생략합니다. % % 아니 전환 : 방금 %를 삽입합니다.
형식 지정에 대한 자세한 정보를 원하시면, 사람이 페이지를 귀하의 가까운 유닉스 시스템에 "포맷"을 참조하십시오.
포맷 스트링 취약점을 공격
포맷 스트링 취약점이 공격을 3 가지 범주 : 서비스 거부로, 읽기, 쓰기 등 가을.
- 서비스 거부 공격의 포맷 스트링 취약점 %의 여러 인스턴스를 활용하여 특성화 프로그램 때까지 불법 주소에서, 어떤 프로그램이 충돌을 일으킬 것이다 데이터 읽기를 시도 specifier 형식은 스택의 데이터를 읽을 수있다.
- 포맷 스트링 취약점이 독서는 일반적으로 x 형식 specifier 우리가 정상적으로 액세스할 수없는 메모리의 섹션을 인쇄할 % 활용 공격하는 것입니다.
- 포맷 스트링 취약점이 공격은 % d 개, % u 또는 % x 형식을 지정 지시 포인터와 사용자의 강제 집행을 덮어 - 쉘 코드 공급 활용 쓰고 싶어요.
포맷 스트링 취약점에 대한 정보의 추가 소스
포맷 스트링 취약점을 악용에 대한 자세한 정보를 원하시면, Exploiting 포맷 스트링 취약점에 짧은 꼬리에 의해, 그리고 포맷 스트링 공격 팀 Newsham 참조.
|






