정수 오버플로 무엇입니까?

이 FAQ는 대답 k4thryn에 의해 작성되었습니다 :

정수 오버플로, 또는 정수 래핑, 프로그램이 실제로는 그 숫자 데이터에서 개최 될 수있는 가치를 바이트의 데이터 유형의 크기에 의해 제한을 기반에서 잠재적인 문제가있습니다. 이 ANSI C는 다음의 최소 크기를 사용합니다 :

데이터 유형 크기 (바이트)
숯불 1
짧게 2
int 2
3

실제로, 많은 컴파일러 4 - 바이트 int를 사용합니다. 또한 데이터 유형에 대한 실제 범위는 그들을 체결할지 여부에 따라 달라집니다 주목해야한다. 도중에 짧은 부호 0과 65535 사이에있을 수있습니다 예를 들어, 서명 2 - 짧은 바이트 -32767과 32767 사이에있을 수있습니다. 를 참조하십시오 [당신의 컴파일러를위한 특정 번호에 대해] / limits.h 파일을 포함합니다.

왜 상관해야합니까? 만약 당신이 너무 작습니다 개최 데이터 형식으로 값을 넣어하려고 높은 - 순서 비트, 그리고 떨어졌다는 낮은 - 순서 비트 저장됩니다. modulo - 산술 그 가치에 대해 확실하게 그것은 데이터를 저장하기 전에 시간 맞는하게 수행할 것입니다 말하는 것도 방법이다. 우리의 서명이 짧은 예를 촬영 :

제한 : 65535 또는 1111년 1111년 1111년 1111년
덩치가 너무 커 : 65536 또는 1 0000 0000 0000 0000
무슨 저장된의 : 0 또는 0000 0000 0000 0000

때문에 높은 - (또는 왼쪽 -가 너무 커 가치의 대부분을) 조금 떨어졌다는 위의 명령은 분명하게, 그 결과입니다. 당신이 무슨 말을 할 수 있을지 아니면 저장된의 결과입니다

  = 값 % 저장되어 (한도 + 1) 
  또는 
  6만5천5백36퍼센트 (65535 + 1) = 0 

서명 데이터에서, 그 결과 일부 듯 이상한 행동에 대해 조금 다른 결과입니다 :

긍정적인 제한 : 32767 또는 0111 1111년 1111년 1111년
덩치가 너무 커 : 32768 또는 1000 0000 0000 0000
무슨 저장 : -32768

이유가 뭐죠? 그것의 2 때문 "칭찬,"부정적인 숫자를 바이너리로 표현하는 방법입니다. 길고도 짧은 이야기의 범위 (0 통해 0111 1111년 1111년 1111년)의 첫 번째 순서로 긍정의 절반 이상의 큰 숫자를 사용하는 지 확인하십시오. 범위의 하반기 다음 순서에 부정적인 숫자 이상의 큰하는 데 사용됩니다. 그래서 서명 2에 대한 부정적인 범위 - 짧은 바이트 -32768 -1 통해, 그 명령에 따라야합니다.

당신은 아직도이 문제가 왜, 당신이하지 말라는거야? 메모리가 부호없는 정수 데이터 유형의 가치를 기반으로 할당되고 있다고 가정합시다. 가치가있다면 주위에 싸서, 그건 너무 작은 메모리를 제공받을 수있습니다. 또는 서명 정수 값을 비교하는 경우와 일부 다른 번호 사이에, 그 전 후자보다 그 가치를 부정하는 경우, 비교를 통과해야 가정에 overflown이 덜 만들어지고있다. 하지만 일을하고 프로그래머가 의도한대로 행동하는거야? 아마 아닐거야.

정수 오버플로에 대한 정보의 추가 소스

그러나이 문서의 범위를 벗어난 경우에는 정수 오버플로우 버그에 대한 자세한 내용은 다른 자원에 들어가있다, 그들의 예방 및 그들의 착취. 즉, Oded Horovitz에 의해들은 Phrack # 60 (하나에 두 개의 매우 흥미로운 기사 하나 blexim) 정수 오버플로우 취약점에있습니다. 정수 포장 또한 "전문적인 소스 코드 감사에서 2002 년 미국 블랙 햇 브리핑 (다우드, 동부 표준시 루게릭병)에서"프레 젠 테이션을 통해 배우게됩니다.

도구 실험에 정수 오버플로와 함께

이 프로그램은 int_wrap.c 당신은 커맨드 라인 데이터 형식이 있는지 여부 (짧은)을 지정하여이 문제를 함께 서명해야한다 또는 서명되지 않은, 그리고 당신이 사용하고자하는 가치 놀러 수있습니다.

참고 : 펄 250 - 숫자에 자리 제한을 갖고있는 것 같아요, 그리고 오류 "숫자가 너무 오래 함께 죽는"(버전 5.8.0에서 테스트를 거침). 그러나, 중요한 자리의 숫자보다 훨씬 적습니다.

안전한 코드 작성 건물 보안 소프트웨어 시큐어 코드입력중 보안 프로그래밍 요리책
Amazon.com에서 보안 프로그래밍에 이러한 우수 도서 구매


상위 5 개 무료 네트워킹 툴

취약점 관리 Dummies 대한

(Qualys)에서 우리 친구들이 Dummies 테크를위한 취약성 관리의 전자 버전 - FAQ를 독자의 무료 사본을 제공하고있습니다.

취약점 관리 Dummies :

  • 취약성 관리를위한 중요한 필요 설명이
  • 자세한 내용은 최고 - 성공적인 취약점 관리 프로그램의 실천 단계에 필수적인
  • 간략 다양한 취약성 관리 솔루션 - 각각의 장점과 단점을 포함한
  • 볼거리 우승 보너스 - QualysGuard 취약성 관리 솔루션
  • 취약점을 제거하기위한 자원을 제공하여 키를 점검표 10 점
스크랩 정수 오버플로 무엇입니까?

최신 블로그 게시물


영어 영어 독일어 독일어 스페인어 스페인어 프랑스어 프랑스어 이탈리아어 이탈리아어 포르투갈어 포르투갈어 러시아어 러시아어 네덜란드어 네덜란드어
그리스어 그리스어 힌디어 힌디어 일본어 일본어 한국어 한국어 중국어 중국어 중국어 (간체) 중국어 (간체) 아랍어 아랍어

저작권 2009년 테크 - 자주 묻는 질문. 판권 소유. 개인 정보 보호 정책.