cgy12306
[pwnable.kr] bof 본문
[bof]
bof 바이너리를 다운받고, c 파일을 보자.
func 함수에 0xdeadbeef 값을 넘겨준다.
func 함수에서는 넘겨받은 값을 key 변수에 저장하고 overflowme 변수를 32byte만큼 할당한다.
gets로 overflowme 변수에 값을 입력하게 되는데 여기서 오버플로우가 발생하게 된다.
이후 if문에서 0xcafebabe 값과 비교해서 같으면 /bin/sh 명령어를 실행하게 된다.
그럼 우리는 오버플로우가 발생할 때 deadbeef로 저장되어 있는 부분을 cafebabe로 변경하면 된다.
func 함수에 들어왔을 때 프롤로그 과정을 거치기 전에 deadbeef가 있었던 것을 확인할 수 있다.
gets 함수에서 A를 8개 넣어준 후의 스택 모습이다.
overflowme 변수가 시작되는 지점과 deadbeef가 시작되는 지점의 거리는 52byte이다.
그럼 A를 52byte만큼 넣어주고, 뒤에 cafebabe를 넣어주면 된다.
'Wargame > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] mistake (0) | 2020.01.26 |
---|---|
[pwnable.kr] leg (0) | 2020.01.26 |
[pwnable.kr] flag (0) | 2020.01.26 |
[pwnable.kr] collision (0) | 2020.01.26 |
[pwnable.kr] fd (0) | 2020.01.26 |
Comments