창고 가 넘 치 는 것 은 도대체 무엇 입 니까?(과학 보급 편)
본문 저자: joe 심사: 천분 팀: Arctic Shell
0x1: 스 택 넘 침 학습 기본 요구
1. 어 셈 블 리 기초 에 대해 어느 정도 이해 하고 관련 된 프로 그래 밍 언어 기초 2. 배우 기 좋 은 마음 을 가진다.
0x2: 프로그램 실행 에 대한 이해
? ?
우선, 우리 가 알 아야 할 것 은 레지스터 는 CPU 안의 것 이 고, 메모 리 는 CPU 밖의 데이터 버스 에 있 으 며, 컴퓨터 의 모든 프로그램 이 메모리 에서 실 행 됩 니 다!
스 택 은 메모리 의 데이터 구조 로 메모리 가 CPU 와 하 드 디스크 사이 의 채널 이 고 레지스터 는 CPU 의 메모리 입 니 다.
가상 주소
즉, 가상 메모리 주소 입 니 다. 프로그램 이 사용 하 는 메모리 주 소 는 가상 주소 입 니 다. 즉, 프로그램 이 가상 주소 공간 에서 실 행 됩 니 다.
모든 '프로그램' 이 가상 주소 에서 실행 되 는 것 은 아 닙 니 다. CPU 는 시작 할 때 실제 모드 에서 실 행 됩 니 다. Bootloader 와 커 널 은 페이지 표를 초기 화하 기 전에 가상 주 소 를 사용 하지 않 고 물리 주 소 를 직접 사용 합 니 다.
물리 주소
물리 주 소 는 실제 존재 하 는 물리 적 메모리 주 소 를 말 합 니 다. 이 메모리 의 주 소 를 방문 하려 면 해당 하 는 물리 적 메모리 가 필요 합 니 다.
반사
페이지 표를 통 해 일대일 맵 을 진행 합 니 다.
0x3: 스 택 이 넘 치 는 것 은 무엇 입 니까?
이른바 넘 치 는 것 은 규정된 범 위 를 넘 어 서 는 것 이 고 넓 은 의미 에서 범 위 를 넘 어서 어떤 나 쁜 일이 발생 하 는 것 이다.
창고 가 무엇 입 니까?
스 택 은 스 택 이 라 고도 부 르 는데, 너 는 그것 을 상자 로 이해 할 수 있 고, 스 택 에 들 어가 고, 스 택 에서 나 오 는 것 은 선진 적 인 후에 나 오 는 규칙 을 따 를 수 있다.
왜 넘 쳐?
예 (C 언어): C 언어 에 내 장 된 검사 메커니즘 이 없어 서 버퍼 에 복 사 된 데이터 가 버퍼 크기 보다 크 지 않도록 합 니 다. 따라서 이 데이터 가 충분 할 때 버퍼 범위 밖으로 넘 쳐 서 쓰 지 말 아야 할 곳 에 쓰 입 니 다.그 렇 기 때문에 우 리 는 이 방식 을 통 해 민감 한 권한 을 빼 앗 을 수 있다.
int f(int x){int a[10];
어떤 항목 이 쉽게 나타 납 니까?
큰 프로젝트 일수 록 넘 치 는 것 은 점점 피 할 수 없 게 될 것 이다!
0x4: 관련 구멍 (부분)
··· CVE-2018-17916 CVE-2018-14829 CVE-2017-11882 CVE-2017-9430 CVE-2015-8651 CVE-2014-3100 CVE-2012-0158 CVE-2011-0104 CVE-2010-3333 CVE-2010-0188 CVE-2009-0927 CVE-2008-2992 CVE-2007-5659 ···
총화
연 도 를 통 해 알 수 있 듯 이 스 택 이 넘 치 는 것 을 찾 는 것 은 어 려 울 것 입 니 다. 그러나 '넘 치 는' 구멍 을 얻 으 면 시스템 이나 클 라 이언 트 를 대상 으로 하 는 가장 큰 이기 가 될 것 입 니 다!
다음으로 전송:https://www.cnblogs.com/anbus/p/10861692.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.