attackme의 코드를 살펴보면, shell함수가 없는 것을 확인하실 수 있습니다.그렇기에 환경변수에 쉘코드를 넣고 그 쉘코드의 주소 값을 메인함수의 리턴 값 (call함수가 호출하는 값) 으로 받아오면 됩니다. 메인함수를 들여다보니, call함수 초기화를 ebp-16에서 해주고 fgets함수로 56바이트를 받습니다.이는 40바이트의 쓸모없는 값을 채워주고 쉘코드를 넣은 환경변수의 주소를 채워주면 된다는 뜻 입니다. 이렇게 환경변수를 만들어 줍니다. 환경변수의 주소를 구하는 코드입니다.getenv()함수로 얻어오는 주소의 오차범위를 좀 더 줄이기 위한 코드입니다. 주소를 확인해줍니다. 쓸모 없는 값으로 40바이트를 채워준 뒤 구한 주소 값을 넣어 shell을 얻었습니다.