[시스템프로그래밍][bomblab]과제 레포트
- 최초 등록일
- 2016.10.29
- 최종 저작일
- 2015.11
- 20페이지/ 한컴오피스
- 가격 1,500원
소개글
시스템 프로그래밍 및 리버스 엔지니어링의 대표격이고 전세계적으로 유명한 bomblab과제를 리포트 한것입니다.
해당 과제는 만점을 받았고 자세한 해설을 올렸습니다.
목차
없음
본문내용
breakpoint 1(phase_defused)
0x08048fe0번지의 코드를 보면 0x804b74c번지의 값이 6일 때만 위의 secret phase 관련 내용이 실행된다는 것을 알 수 있다. display *0x804b74c 명령으로 0x804b74c번지의 값이 어떻게 변하는지 확인해보면 해당 값은 현재 진행 중인 phase의 번호라는 것을 알 수 있다. 따라서 secret phase 관련 내용은 phase 6를 통과한 이후에만 실행이 될 것이다.
breakpoint 2(phase_defused)
sscanf함수를 호출하기전 esp와 esp+4 에 해당하는 메모리 공간을 살펴 보니 esp+4는 “%d %s”라는 값을 가지고 있고 esp공간에는 “4”라고 출력되는 것을 알수 있었다. 따라서 이 입력은 4번째 문제의 정답이고 4뒤에 어떤 문자열을 입력해야 함을 직잠할 수 있다. 왜냐하면 sscanf함수가 반환하는 값이 인풋 개수 이므로 eax값이 2가 되어야 한다.
그 이후로 두 개의 문자열이 같은지 비교하는 strings_not_equal함수가 실행되는데 0x8049a06번지에 있는 값을 문자열로 찍어보니 “pentakill”이였고 이 값이 내가 입력한 문자열과 같아야 함을 알 수 있다.
위와같이 정확하게 4번 문제에서 4 pentakill을 입력한 경우 “Curses, you’ve found the secret phase!\n” “But finding it and solving it are quite different...\n”라고 출력한 후 secret phase로 들어가게 된다.
참고 자료
없음