이 글은 PC에서 보는 것을 추천드립니다 :)
0. 잠깐, 우리가 누구?
안녕하세요. Layer7 시연회를 보러오신 여러분 환영합니다. 뿌우~🥳
Heap Exploit을 주제로 "도연이의 은밀한 비밀 일기장📝"시연회를 준비한
Layer7 20기 김도연, 장재호, 김진무입니다.
신입생 여러분들의 눈높이에 맞춰 최대한 쉽고 재밌는 설명으로 한 눈에 들어올 수 있게끔 작성했습니다. 난이도를 생각해서 생략한 내용이 있고, 설명이 자세하지 않은 부분도 있습니다.
이해가 안 되는 부분이 있다면 구글링을 통해 공부해보고,
그래도 모를 때 언제든 물어봐주셔도 됩니다. :)
그럼 도연이의 은밀한 비밀 일기장을 보러 가봅시다. 렛츠기! 🏃🏻
1. 사건의 전말
도연이가 혼자 Heap을 공부했나 보다.
도연이가 떵떵대면서 어떻게 해킹을 공부하는데 Heap도 모르냐며 Layer7 20기 부원들의
약을 살살 올리고 있는데 정말 꼴을 보기가 싫다!
Heap을 공부하지 않은 멍청한 아이들은 절대로 풀지 못 할 문제라고 비아냥거리면서 문제를 하나 툭 던져줬다.
Hㅏ.. 😤 정말 저 김도연의 코를 어떻게 납-작하게 눌러버릴 수 있을까?
이대로 가만히 있을 수는 없어.. 당장 저 문제를 풀고 말거야 으그그윽으그윽으그귺ㄱ!!!!
일단 영상을 통해서 상황을 파악해보자.
2. 아주 간단한 개념
1) Heap? 힙이 뭐지? 귀여운 어피치의 엉덩이? 🍑
메모리 구조와 힙
아하~ 프로그램을 실행하면 운영체제는 메모리에 프로그램을 실행할 공간을 할당해주는구나.
엇 저기 보니까 메모리 구조에 힙이라는 영역이 있네. (어피치가 앉아있는 곳)
도연이가 낸 문제는 힙과 관련되어 있다고 하니 우선 힙이 뭔지 알아보자!
힙은 사용자가 직접 실행 공간을 할당하고 해제하는 메모리 공간이다.
malloc과 calloc, free 등을 이용해 동적할당을 하면 heap 공간에 메모리가 할당된다.
찾아보니 스택 영역이랑 비슷하면서도 다른 것 같던데,,, 둘의 차이점은 표로 정리해보자.
2) 진무의 위가 오버플로우 됐다! 🍔
버퍼 오버플로우가 무엇인가?
버퍼 오버플로우 (buffer overflow)는 시스템 해킹에서 자주 쓰이는 기법이다.
여기서 buffer는 데이터를 저장하는 공간을 말한다.
그렇다면 버퍼 오버플로우는 buffer가 overflow하게 만드는 기법인건가?
음~ 저장공간인 버퍼에 무언가를 가득 담아서 넘치게 하는 것이겠구나!
다음은 쉬운 이해를 위한 진무의 햄최5 사례이다. 이야기를 읽어보자.
Layer7 20기 쀼장 진무는 햄버거를 최대 5개 먹을 수 있는 위를 가지고 있다.
꺼억 💨 잘 먹었다. 근데 옆에서 세트 메뉴를 먹고 있던 재호가 와서 남은 감튀를 진무에게 선물로 주고 갔다.🍟
버리기에 아깝다고 생각을 한 진무는 감튀를 맛있게 냠냠한..ㄷ..우엑ㅇㄱ웱레겡ㄱ웩엑웩웨에ㅔ엑레ㅔ렐웨엑웩ㄱ 🤮
진무의 위는 5개의 햄버거만을 담을 수 있는데 재호가 준 감튀까지 먹었더니, 위가 가득차서 음식물이 오버플로우 된 것이다!
3) 엉덩이가 넘쳐흐른다.
힙 오버플로우 + a
오버플로우 현상이 heap이라는 공간에서 발생한다면, 그게 바로 Heap Overflow이다.
힙 오버플로우 말고도 힙에서 발생하는 취약점에는 대표적으로 다음과 같은 것들이 있다.
기법 | 설명 |
Heap Overflow | Heap 영역에 있는 버퍼보다 더 큰 크기의 값이 들어왔을 때 발생하는 취약점 |
Use After Free (UAF) | 동적 할당한 메모리를 free로 해제한 후, 메모리 공간에 접근할 수 있는 취약점 |
Double Free Bug | free를 두 번 했을 때 생기는 취약점 |
더 다양하고 자세한 내용은 아래 링크를 통해 알아보자.
www.lazenca.net/display/TEC/02.Heap+Exploitation
3. 문제를 풀었다!
도연이가 준 문제를 열어봤더니 개수 제한 없이 입력할 수 있는 취약점이 있었다.
이를 이용하여 공격을 해보면 되겠다.
아까 우리 친구들을 그렇게 만만하게 보더니 저렇게 취약점이 잘 보이는 쉬운 문제를 내다니..!
4. 아 ㅋㅋ 이건 못 참지
디렉터리 목록을 보니까 도커가 아니라 자기 서버에 문제를 올려뒀나보다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
근데 심상치 않아 보이는 디렉토리가 있다.
diary? 일기장인가? 📚 들어가보자.
아ㅋㅋ 이건 못 참지ㅋㅋㅋ 도연이가 짝사랑 하는 선배랑 데이트 하기 전에 쓴 일기를 여기에다가 써놨나보다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ코를 납작하게 해줘야겠다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
동영상으로 함께 도연이를 놀려주자.
나의 자존심을 건드리다니. 도연이의 은밀한 일기장을 캡처해서 복수에 성공했다.
으하하캬카캬카캬캬캬캬 🤪
도연이는 끝내 정신을 잃고 말았다.
이해는 잘 되셨나요? 혹시 이해가 안 되거나 더 알고 싶은 것이 있다면
더보기 칸에 연락처를 적어두었으니 연락해주시면 됩니다.
Discord : 김도연#8726
Mail : sunrin.doyeon@gmail.com
Layer7 21기 많은 지원 바랍니다! 🥰
감사합니다.
아 참!
여러분 모두 아시겠지만 엉덩이는 heap이 아니라 hip이랍니다. 속닥속닥
시연회 스토리 내용은 모두 허구이며 절대로 사실이 아닙니다. 😱
'Sunrin > Layer7' 카테고리의 다른 글
컴퓨터의 부팅 과정과 Memory (0) | 2021.04.11 |
---|---|
[HackCTF] Basic BOF #1 #2 (0) | 2021.01.30 |
HackCTF Sysrop (0) | 2020.11.27 |
HackCTF : Cryptography, Smooth CipherText, Classic Cipher (0) | 2020.11.06 |
컨테이너와 도커 (0) | 2020.09.16 |