본문 바로가기

System Programming/CSAPP Lab

[Buffer Lab] 프로젝트 파일 다운로드 및 시작하기, executable 프로그램 실행하기(32/64-bit 환경 호환성 해결)

프로젝트 파일 다운로드

Buffer lab의 프로젝트 파일은 아래 링크에서 다운로드 받을 수 있다.

 

다운로드 링크: http://csapp.cs.cmu.edu/3e/labs.html

 

CS:APP3e, Bryant and O'Hallaron

Lab Assignments This page contains a complete set of turnkey labs for the CS:APP3e text. The labs all share some common features. Each lab is distributed in a self-contained tar file. You will need a CS:APP account to download the code. To untar foo.tar, t

csapp.cs.cmu.edu

.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/

 

How to Run 32-bit App on 64-bit Linux - Fedingo

Sometimes you may need to run 32-bit app on 64-bit Linux. Here are the steps to do so.

fedingo.com

그대로 다운로드 받았더니 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부터 프로젝트를 시작하면 된다.