프로젝트 파일 다운로드
Buffer lab의 프로젝트 파일은 아래 링크에서 다운로드 받을 수 있다.
다운로드 링크: http://csapp.cs.cmu.edu/3e/labs.html
.tar 형태로 압축되어 있는 파일을 해제하고 나면 아래와 같은 3개의 executable 파일이 존재한다.
32-bit executable과 64-bit ubuntu의 호환 문제로 인한 추가적인 설치
실행 파일을 실행시키려고 했는데, 모두 파일이 없다고 떴다.
구글 검색을 해보니 pdf 파일에도 나와 있듯이, 이 실행파일들은 32-bit 환경에서 컴파일된 것인데, ubuntu 환경이 64-bit이라서 호환성 문제가 발생한 것으로 보인다. 그래서 이 오류에 대한 해결 방법을 아래 링크에서 찾았고,
참고 링크: https://fedingo.com/how-to-run-32-bit-app-on-64-bit-linux/
그대로 다운로드 받았더니 executable들을 실행시킬 수 있었다.
makecookie 프로그램으로 userid에 대한 cookie 생성하기
프로젝트 설명에 따라, makecookie 프로그램을 실행시켜서 cookie를 생성해본다. 이 때, 프로그램의 argument로 userid를 주는데, 여기서는 블로그명인 crm06217을 id로 사용하였다.
8개의 hex digit로 이루어진 cookie string을 얻었다.
bufbomb 프로그램 실행시키기
bufbomb 프로그램의 getbuf() 함수는 사용자로부터 input string을 받아서 크기가 정해져있는 char type의 array인 buf에 이를 저장한다. 그러나, 사용자 입력이 정해져 있는 길이(여기서는 32)보다 길 수도 있는데, 이 경우 프로그램이 segmentation error를 낸다고 한다. 이를 직접 확인해보자.
hex2raw 프로그램 실행시키기
이 프로그램은 그냥 실행시켜보면 아무 동작도 하지 않는 듯 보이는데, 매뉴얼에 나온대로 파일명을 argument로 넘겨주어야 한다. input txt 파일은 hex digit들이 공백으로 구분되어 있는 문자열이다. 우선 아래와 같이 4개의 hex digit으로 구성된 exploit.txt 파일을 만들어서
hex2raw 프로그램에 argument로 넣어준다.
exploit-raw.txt 파일을 열어보면 hex digit을 ascii 문자로 변환한 값들이 들어있는 것을 확인할 수 있다. 매뉴얼을 읽어보면, 이 프로그램은 알파벳이나 숫자와 같은 character에 해당하지 않는 hex 값을 보다 편리하게 입력할 수 있도록 하는 보조 프로그램 정도로 이해할 수 있을 것 같다.
이제 Level 0부터 프로젝트를 시작하면 된다.
'System Programming > CSAPP Lab' 카테고리의 다른 글
[Buffer Lab] Level 1, Stack Corruption 이용하여 함수 argument 조작하기 (0) | 2023.02.09 |
---|---|
[Buffer Lab] Level 0, Stack Corruption 이용하여 함수의 return address 조작하기 (0) | 2023.02.06 |
[Bomb Lab] Phase 6, linked list operation의 assembly code (0) | 2023.01.30 |
[Bomb Lab] Phase 5, 문자열 조작 연산, gdb 메모리 값 참조 (1) | 2023.01.26 |
[Bomb Lab] Phase 4, 재귀 함수 호출의 assembly code (0) | 2023.01.23 |