profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 4. 1. 17:31

3번 문제화면이다.

 

문제 파일을 다운받았다.

 

bof.c 파일의 소스코드이다.

func() 함수에서 gets 함수를 통해 입력을 받는데, 입력 크기를 지정하지 않아 버퍼의 크기인 32 byte 보다 더 입력을 받아 overflow가 발생하는 모습이다.

 

오버 플로우를 통해 key 값을 0xcafebabe로 바꿔주면 쉘을 실행할 수 있을 것이다.

 

그렇다면 offset을 구해보도록하자.

func() 함수에서 두번째 call 하는 부분이 gets 함수가 실행되는 부분이다.

이때, overflowme를 인자값으로 주기 때문에 코드 위쪽을 보면 overflowme의 주소를 알 수 있다.

ebp - 0x2c로 ebp로부터 44만큼 떨어져 있다. 따라서 offset은 44 + 4(SFP) + 4(RET) = 52이다.

 

따라서 payload는 다음과 같을 것이다.

"A"*52 + "\xbe\xba\xfe\xca"

 

 

성공적으로 쉘을 획득하였다!!

'Wargame > Pwnable.kr' 카테고리의 다른 글

[Pwnable.kr] 6번 random  (0) 2021.04.08
[Pwnable.kr] 5번 passcode  (0) 2021.04.08
[Pwnable.kr] 4번 flag  (0) 2021.04.08
[Pwnable.kr] 2번 collision  (0) 2021.04.01
[Pwnable.kr] 1번 fd  (0) 2021.04.01
복사했습니다!