9. HEAP BOF
1) HEAP BOF
▣ Heap이란?
- 동적 메모리 할당 영역
- 사용자가 쓰기 시작해야 공간이 확보됨.
- 데이터 사이즈 알 수 없을 시 사용
- malloc(), free() 등과 상호작용
- STACK은 컴파일 시 할당, HEAP은 런타임 할당.
▣ Heap Overflow
- STACK과 같이 인접한 변수를 덮어쓸 수 있음에 기초.
- STACK과는 다른 구조이며, 직접적으로 RET 변조 불가(RET가 없음..)
- STACK Overflow에 비해 취약점 발견 저조(= 정적분석이 어려움)
- STACK Overflow보다 비율이 낮음. --> 큰 쓸모가 없어서..ㅜㅜ
▣ Heap Overflow Attack을 통해 손상받는 데이터
- 인접 변수
- 함수 포인터
▣ Heap Overflow 실습 (레드햇)
- dumpcode.h 파일은 해당 변수의 메모리 공간을 볼 수 있는 함수를 담고있음.
- 프로그램 실행 후에 입력을 받는 프로그램이면...
☞ perl -e 'print "A"x20' | ./프로그램명
☞ 또는 (perl -e 'print "A"x20';cat) | ./프로그램명
(1) 예제1
☞ 힙 오버플로우를 통해 success! 가 뜨게하라.
☞ success는 동적할당 된 B 변수가 i2sec 문자열과 동일하면 뜸.
☞ A, B 변수 모두 크기는 100.
(2) 예제 2
☞ 두 개의 동적할당 된 변수는 크기가 40씩.
☞ B 변수가 /bin/sh 문자열과 동일하게 만들어 root권한의 쉘이 뜨면 성공!
i2sec 대구지점 23기 수료생.
'해킹&보안 > 시스템해킹&보안' 카테고리의 다른 글
[D+11] 보호 기법 우회 (2) (0) | 2017.04.13 |
---|---|
[D+10] 보호 기법 우회 (1) (4) | 2017.04.12 |
[D+9] 메모리 보호 기법 (0) | 2017.04.12 |
[D+8] 쉘 코드 제작 (심화) (0) | 2017.04.12 |
[D+7] 쉘 코드 제작 (0) | 2017.04.11 |