attackme의 코드를 살펴보면, shell함수가 없는 것을 확인하실 수 있습니다.그렇기에 환경변수에 쉘코드를 넣고 그 쉘코드의 주소 값을 메인함수의 리턴 값 (call함수가 호출하는 값) 으로 받아오면 됩니다. 메인함수를 들여다보니, call함수 초기화를 ebp-16에서 해주고 fgets함수로 56바이트를 받습니다.이는 40바이트의 쓸모없는 값을 채워주고 쉘코드를 넣은 환경변수의 주소를 채워주면 된다는 뜻 입니다. 이렇게 환경변수를 만들어 줍니다. 환경변수의 주소를 구하는 코드입니다.getenv()함수로 얻어오는 주소의 오차범위를 좀 더 줄이기 위한 코드입니다. 주소를 확인해줍니다. 쓸모 없는 값으로 40바이트를 채워준 뒤 구한 주소 값을 넣어 shell을 얻었습니다.
ㄽㅋ
ls로 디렉토리를 확인해보니 [hint]라는 파일이 존재합니다. cat명령어로 hint파일을 확인해보니 "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데 ... "라고 뜹니다.Vi 에디터를 얘기하는 듯 합니다. level 1과 마찬가지로 setuid가 걸린 level3권한의 파일을 찾아줍니다. editor는 디렉토리가 아닌 듯 하네요. /usr/bin 디렉토리로 이동해서 editor파일이 있는지 확인합니다. editor을 실행시켜줍니다. Vim 편집기가 뜨네요.명령어 모드로 전환하기 위해 [esc] 를 눌러줍니다. vim 편집기는 외부명령도 편집기 내에서 할 수 있게 하는 명령어가 존재합니다. :! 를 친 후 bash를 입력해주면 외부명령으로 인식되며 level3의 권한을 얻게 됩니다. level..