SUA/시스템 해킹

handray(64bit 바이너리 파일)

LikeMermaid 2021. 8. 30. 00:31
728x90

1. homework2

1.1 파일 분석

- homework2 파일을 실행해보니 입력한 점수에 따라 등급을 출력해주는 프로그램임

 

- i fu 명령어로 확인해보니 func함수, main함수가 존재함

 

- 함수 에필로그를 지나 스택에 16bytes 만큼 공간을 확보함

 

- scanf함수를 호출하여 사용자에게 입력값을 레지스터에 저장하여 func함수에 인자로 넘겨주는 코드임

※ 입력값은 50으로 입력함

 

- func함수에 들어와 함수 에필로그를 지나 main함수에서 전달받은 인자(50)을 rbp-0x4에 저장함

 

- 사용자가 입력한 값(rbp-0x4)와 0x59(10진수로 89)를 비교하여 같거나 작으면 func+20으로 점프하라는 코드임

 

- main 함수에서 scanf함수 호출 시 입력했던 값이 50이기 때문에 func+20 주소로 jump되었고 다시 0x4f(10진수로 79)와 비교하여 작거나 같으면 func+33로 점프하라는 코드임

 

- main 함수에서 scanf함수 호출 시 입력했던 값이 50이기 때문에 func+33 주소로 jump되었고 다시 0x45(10진수로 69)와 비교하여 작거나 같으면 func+46로 점프하라는 코드임

 

- main 함수에서 scanf함수 호출 시 입력했던 값이 50이기 때문에 func+46 주소로 jump되었고 다시 0x3b(10진수로 59)와 비교하여 작거나 같으면 func+59로 점프하라는 코드임

 

- main 함수에서 scanf함수 호출 시 입력했던 값이 50이기 때문에 func+59 주소로 jump되었고 eax레지스터에 0x46("F")를 넣은 후 함수 프롤로그가 나오며 func함수가 종료됨

 

- main 함수로 복귀 후 printf 함수를 호출하여 등급을 출력한 뒤 main 함수 프롤로그가 나오며 main함수도 종료됨

 

1.2 정리

main함수에서 사용자에게 점수를 입력받은 후 func함수에서 점수를 갖고 등급을 판단하여 다시 main함수에서 등급을 출력해주는 프로그램임

 

1.3 결과

homework2 프로그램은 위와 같은 코드라고 생각함

'SUA > 시스템 해킹' 카테고리의 다른 글

handray(32bit 바이너리 파일)  (0) 2021.08.29